mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-05 23:21:53 +00:00
nor-shall-our-souls-falter
This commit is contained in:
@@ -337,6 +337,7 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new())
|
|||||||
/obj/machinery/atmospherics/singularity_pull(S, current_size)
|
/obj/machinery/atmospherics/singularity_pull(S, current_size)
|
||||||
if(current_size >= STAGE_FIVE)
|
if(current_size >= STAGE_FIVE)
|
||||||
deconstruct(FALSE)
|
deconstruct(FALSE)
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/machinery/atmospherics/update_remote_sight(mob/user)
|
/obj/machinery/atmospherics/update_remote_sight(mob/user)
|
||||||
user.sight |= (SEE_TURFS|BLIND)
|
user.sight |= (SEE_TURFS|BLIND)
|
||||||
|
|||||||
@@ -326,6 +326,16 @@
|
|||||||
/obj/machinery/atmospherics/unary/vent_pump/can_crawl_through()
|
/obj/machinery/atmospherics/unary/vent_pump/can_crawl_through()
|
||||||
return !welded
|
return !welded
|
||||||
|
|
||||||
|
/obj/machinery/atmospherics/unary/vent_pump/attack_alien(mob/user)
|
||||||
|
if(!welded || !(do_after(user, 20, target = src)))
|
||||||
|
return
|
||||||
|
user.visible_message("<span class='warning'>[user] furiously claws at [src]!</span>", "<span class='notice'>You manage to clear away the stuff blocking the vent.</span>", "<span class='italics'>You hear loud scraping noises.</span>")
|
||||||
|
welded = FALSE
|
||||||
|
update_icon()
|
||||||
|
pipe_image = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir)
|
||||||
|
pipe_image.plane = ABOVE_HUD_PLANE
|
||||||
|
playsound(loc, 'sound/weapons/bladeslice.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/machinery/atmospherics/unary/vent_pump/attackby(obj/item/W, mob/user, params)
|
/obj/machinery/atmospherics/unary/vent_pump/attackby(obj/item/W, mob/user, params)
|
||||||
if(istype(W, /obj/item/weldingtool))
|
if(istype(W, /obj/item/weldingtool))
|
||||||
var/obj/item/weldingtool/WT = W
|
var/obj/item/weldingtool/WT = W
|
||||||
|
|||||||
@@ -382,6 +382,16 @@
|
|||||||
/obj/machinery/atmospherics/unary/vent_scrubber/can_crawl_through()
|
/obj/machinery/atmospherics/unary/vent_scrubber/can_crawl_through()
|
||||||
return !welded
|
return !welded
|
||||||
|
|
||||||
|
/obj/machinery/atmospherics/unary/vent_scrubber/attack_alien(mob/user)
|
||||||
|
if(!welded || !(do_after(user, 20, target = src)))
|
||||||
|
return
|
||||||
|
user.visible_message("<span class='warning'>[user] furiously claws at [src]!</span>", "<span class='notice'>You manage to clear away the stuff blocking the scrubber.</span>", "<span class='italics'>You hear loud scraping noises.</span>")
|
||||||
|
welded = FALSE
|
||||||
|
update_icon()
|
||||||
|
pipe_image = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir)
|
||||||
|
pipe_image.plane = ABOVE_HUD_PLANE
|
||||||
|
playsound(loc, 'sound/weapons/bladeslice.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/machinery/atmospherics/unary/vent_scrubber/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
|
/obj/machinery/atmospherics/unary/vent_scrubber/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
|
||||||
if(istype(W, /obj/item/weldingtool))
|
if(istype(W, /obj/item/weldingtool))
|
||||||
var/obj/item/weldingtool/WT = W
|
var/obj/item/weldingtool/WT = W
|
||||||
|
|||||||
@@ -193,6 +193,9 @@
|
|||||||
if(isliving(L))
|
if(isliving(L))
|
||||||
L.fire_act()
|
L.fire_act()
|
||||||
|
|
||||||
|
/obj/effect/hotspot/singularity_pull()
|
||||||
|
return
|
||||||
|
|
||||||
/obj/effect/hotspot/fake // Largely for the fireflash procs below
|
/obj/effect/hotspot/fake // Largely for the fireflash procs below
|
||||||
fake = TRUE
|
fake = TRUE
|
||||||
burn_time = 30
|
burn_time = 30
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#define ABSTRACT 64 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way
|
#define ABSTRACT 64 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way
|
||||||
#define ON_BORDER 128 // item has priority to check when entering or leaving
|
#define ON_BORDER 128 // item has priority to check when entering or leaving
|
||||||
#define PREVENT_CLICK_UNDER 256
|
#define PREVENT_CLICK_UNDER 256
|
||||||
|
#define NODECONSTRUCT 512
|
||||||
|
|
||||||
#define EARBANGPROTECT 1024
|
#define EARBANGPROTECT 1024
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
#define isconstruct(A) (istype(A, /mob/living/simple_animal/hostile/construct))
|
#define isconstruct(A) (istype(A, /mob/living/simple_animal/hostile/construct))
|
||||||
|
|
||||||
//Objects
|
//Objects
|
||||||
|
#define isobj(A) istype(A, /obj) //override the byond proc because it returns true on children of /atom/movable that aren't objs
|
||||||
|
|
||||||
#define isitem(A) (istype(A, /obj/item))
|
#define isitem(A) (istype(A, /obj/item))
|
||||||
|
|
||||||
#define ismachinery(A) (istype(A, /obj/machinery))
|
#define ismachinery(A) (istype(A, /obj/machinery))
|
||||||
|
|||||||
@@ -55,8 +55,9 @@
|
|||||||
target = A
|
target = A
|
||||||
AttackingTarget()
|
AttackingTarget()
|
||||||
|
|
||||||
/atom/proc/attack_animal(mob/user as mob)
|
/atom/proc/attack_animal(mob/user)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/RestrainedClickOn(var/atom/A)
|
/mob/living/RestrainedClickOn(var/atom/A)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -64,18 +65,20 @@
|
|||||||
Aliens
|
Aliens
|
||||||
Defaults to same as monkey in most places
|
Defaults to same as monkey in most places
|
||||||
*/
|
*/
|
||||||
/mob/living/carbon/alien/UnarmedAttack(var/atom/A)
|
/mob/living/carbon/alien/UnarmedAttack(atom/A)
|
||||||
A.attack_alien(src)
|
A.attack_alien(src)
|
||||||
/atom/proc/attack_alien(mob/user as mob)
|
|
||||||
|
/atom/proc/attack_alien(mob/living/carbon/alien/user)
|
||||||
attack_hand(user)
|
attack_hand(user)
|
||||||
return
|
|
||||||
/mob/living/carbon/alien/RestrainedClickOn(var/atom/A)
|
/mob/living/carbon/alien/RestrainedClickOn(atom/A)
|
||||||
return
|
return
|
||||||
|
|
||||||
// Babby aliens
|
// Babby aliens
|
||||||
/mob/living/carbon/alien/larva/UnarmedAttack(var/atom/A)
|
/mob/living/carbon/alien/larva/UnarmedAttack(atom/A)
|
||||||
A.attack_larva(src)
|
A.attack_larva(src)
|
||||||
/atom/proc/attack_larva(mob/user as mob)
|
|
||||||
|
/atom/proc/attack_larva(mob/user)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -119,6 +119,12 @@
|
|||||||
owner = null
|
owner = null
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/obj/effect/ebeam/singularity_pull()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/effect/ebeam/singularity_act()
|
||||||
|
return
|
||||||
|
|
||||||
/obj/effect/ebeam/deadly/Crossed(atom/A, oldloc)
|
/obj/effect/ebeam/deadly/Crossed(atom/A, oldloc)
|
||||||
..()
|
..()
|
||||||
A.ex_act(1)
|
A.ex_act(1)
|
||||||
|
|||||||
@@ -7,6 +7,12 @@
|
|||||||
var/ranged_mousepointer
|
var/ranged_mousepointer
|
||||||
var/mob/living/ranged_ability_user
|
var/mob/living/ranged_ability_user
|
||||||
|
|
||||||
|
/obj/effect/proc_holder/singularity_act()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/effect/proc_holder/singularity_pull()
|
||||||
|
return
|
||||||
|
|
||||||
var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin verb for now
|
var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin verb for now
|
||||||
|
|
||||||
/obj/effect/proc_holder/proc/InterceptClickOn(mob/living/user, params, atom/A)
|
/obj/effect/proc_holder/proc/InterceptClickOn(mob/living/user, params, atom/A)
|
||||||
|
|||||||
@@ -164,6 +164,10 @@
|
|||||||
SEND_SIGNAL(src, COMSIG_ATOM_DIR_CHANGE, dir, newdir)
|
SEND_SIGNAL(src, COMSIG_ATOM_DIR_CHANGE, dir, newdir)
|
||||||
dir = newdir
|
dir = newdir
|
||||||
|
|
||||||
|
///Handle melee attack by a mech
|
||||||
|
/atom/proc/mech_melee_attack(obj/mecha/M)
|
||||||
|
return
|
||||||
|
|
||||||
/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
|
/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
|
||||||
SEND_SIGNAL(src, COMSIG_ATOM_HULK_ATTACK, user)
|
SEND_SIGNAL(src, COMSIG_ATOM_HULK_ATTACK, user)
|
||||||
if(does_attack_animation)
|
if(does_attack_animation)
|
||||||
@@ -235,6 +239,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/atom/proc/bullet_act(obj/item/projectile/P, def_zone)
|
/atom/proc/bullet_act(obj/item/projectile/P, def_zone)
|
||||||
|
SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, P, def_zone)
|
||||||
. = P.on_hit(src, 0, def_zone)
|
. = P.on_hit(src, 0, def_zone)
|
||||||
|
|
||||||
/atom/proc/in_contents_of(container)//can take class or object instance as argument
|
/atom/proc/in_contents_of(container)//can take class or object instance as argument
|
||||||
@@ -716,8 +721,8 @@ var/list/blood_splatter_icons = list()
|
|||||||
/atom/proc/singularity_act()
|
/atom/proc/singularity_act()
|
||||||
return
|
return
|
||||||
|
|
||||||
/atom/proc/singularity_pull()
|
/atom/proc/singularity_pull(obj/singularity/S, current_size)
|
||||||
return
|
SEND_SIGNAL(src, COMSIG_ATOM_SING_PULL, S, current_size)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Respond to acid being used on our atom
|
* Respond to acid being used on our atom
|
||||||
|
|||||||
@@ -321,7 +321,7 @@
|
|||||||
if(!QDELETED(hit_atom))
|
if(!QDELETED(hit_atom))
|
||||||
return hit_atom.hitby(src)
|
return hit_atom.hitby(src)
|
||||||
|
|
||||||
/atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = 1, blocked, datum/thrownthing/throwingdatum)
|
/atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked, datum/thrownthing/throwingdatum)
|
||||||
if(!anchored && hitpush && (!throwingdatum || (throwingdatum.force >= (move_resist * MOVE_FORCE_PUSH_RATIO))))
|
if(!anchored && hitpush && (!throwingdatum || (throwingdatum.force >= (move_resist * MOVE_FORCE_PUSH_RATIO))))
|
||||||
step(src, AM.dir)
|
step(src, AM.dir)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -310,15 +310,6 @@
|
|||||||
//Foreach goto(181)
|
//Foreach goto(181)
|
||||||
//SN src = null
|
//SN src = null
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
|
||||||
else
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/dna_scannernew/blob_act()
|
|
||||||
if(prob(75))
|
|
||||||
for(var/atom/movable/A as mob|obj in src)
|
|
||||||
A.forceMove(src.loc)
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
// Checks if occupants can be irradiated/mutated - prevents exploits where wearing full rad protection would still let you gain mutations
|
// Checks if occupants can be irradiated/mutated - prevents exploits where wearing full rad protection would still let you gain mutations
|
||||||
/obj/machinery/dna_scannernew/proc/radiation_check()
|
/obj/machinery/dna_scannernew/proc/radiation_check()
|
||||||
@@ -387,13 +378,6 @@
|
|||||||
if(prob(50))
|
if(prob(50))
|
||||||
//SN src = null
|
//SN src = null
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
|
||||||
else
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/scan_consolenew/blob_act()
|
|
||||||
if(prob(75))
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/machinery/computer/scan_consolenew/New()
|
/obj/machinery/computer/scan_consolenew/New()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
/mob/living/simple_animal/hostile/blob
|
/mob/living/simple_animal/hostile/blob
|
||||||
icon = 'icons/mob/blob.dmi'
|
icon = 'icons/mob/blob.dmi'
|
||||||
pass_flags = PASSBLOB
|
pass_flags = PASSBLOB
|
||||||
faction = list("blob")
|
faction = list(ROLE_BLOB)
|
||||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||||
minbodytemp = 0
|
minbodytemp = 0
|
||||||
maxbodytemp = 360
|
maxbodytemp = 360
|
||||||
@@ -21,7 +21,14 @@
|
|||||||
color = a_color
|
color = a_color
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/blob/blob_act()
|
/mob/living/simple_animal/hostile/blob/blob_act()
|
||||||
return
|
if(stat != DEAD && health < maxHealth)
|
||||||
|
for(var/i in 1 to 2)
|
||||||
|
var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(src)) //hello yes you are being healed
|
||||||
|
if(overmind)
|
||||||
|
H.color = overmind.blob_reagent_datum.complementary_color
|
||||||
|
else
|
||||||
|
H.color = "#000000"
|
||||||
|
adjustHealth(-maxHealth * 0.0125)
|
||||||
|
|
||||||
|
|
||||||
////////////////
|
////////////////
|
||||||
@@ -185,9 +192,6 @@
|
|||||||
adjustBruteLoss(0.2) // If you are at full health, you won't lose health. You'll need it. However the moment anybody sneezes on you, the decaying will begin.
|
adjustBruteLoss(0.2) // If you are at full health, you won't lose health. You'll need it. However the moment anybody sneezes on you, the decaying will begin.
|
||||||
adjustFireLoss(0.2)
|
adjustFireLoss(0.2)
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/blob/blobbernaut/blob_act()
|
|
||||||
return
|
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/blob/blobbernaut/New()
|
/mob/living/simple_animal/hostile/blob/blobbernaut/New()
|
||||||
..()
|
..()
|
||||||
if(name == "blobbernaut")
|
if(name == "blobbernaut")
|
||||||
|
|||||||
@@ -55,7 +55,4 @@
|
|||||||
else
|
else
|
||||||
playsound(src, P.hitsound, 50, 1)
|
playsound(src, P.hitsound, 50, 1)
|
||||||
visible_message("<span class='danger'>[src] is hit by \a [P]!</span>")
|
visible_message("<span class='danger'>[src] is hit by \a [P]!</span>")
|
||||||
take_damage(P.damage, P.damage_type)
|
take_damage(P.damage, P.damage_type)
|
||||||
|
|
||||||
/obj/structure/blob/shield/reflective/bullet_act()
|
|
||||||
return
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||||
|
|
||||||
pass_flags = PASSBLOB
|
pass_flags = PASSBLOB
|
||||||
faction = list("blob")
|
faction = list(ROLE_BLOB)
|
||||||
|
|
||||||
var/obj/structure/blob/core/blob_core = null // The blob overmind's core
|
var/obj/structure/blob/core/blob_core = null // The blob overmind's core
|
||||||
var/blob_points = 0
|
var/blob_points = 0
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
/mob/camera/blob/emote(act, m_type = 1, message = null, force)
|
/mob/camera/blob/emote(act, m_type = 1, message = null, force)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/camera/blob/blob_act()
|
/mob/camera/blob/blob_act(obj/structure/blob/B)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/camera/blob/Stat()
|
/mob/camera/blob/Stat()
|
||||||
|
|||||||
@@ -333,7 +333,7 @@
|
|||||||
last_attack = world.time
|
last_attack = world.time
|
||||||
OB.expand(T, 0, blob_reagent_datum.color)
|
OB.expand(T, 0, blob_reagent_datum.color)
|
||||||
for(var/mob/living/L in T)
|
for(var/mob/living/L in T)
|
||||||
if("blob" in L.faction) //no friendly fire
|
if(ROLE_BLOB in L.faction) //no friendly/dead fire
|
||||||
continue
|
continue
|
||||||
var/mob_protection = L.get_permeability_protection()
|
var/mob_protection = L.get_permeability_protection()
|
||||||
blob_reagent_datum.reaction_mob(L, TOUCH, 25, 1, mob_protection)
|
blob_reagent_datum.reaction_mob(L, TOUCH, 25, 1, mob_protection)
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
Life()
|
Life()
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/blob/blob_act()
|
/obj/structure/blob/blob_act(obj/structure/blob/B)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/blob/proc/Life()
|
/obj/structure/blob/proc/Life()
|
||||||
@@ -134,11 +134,6 @@
|
|||||||
var/damage = 150 - 20 * severity
|
var/damage = 150 - 20 * severity
|
||||||
take_damage(damage, BRUTE)
|
take_damage(damage, BRUTE)
|
||||||
|
|
||||||
/obj/structure/blob/bullet_act(var/obj/item/projectile/Proj)
|
|
||||||
..()
|
|
||||||
take_damage(Proj.damage, Proj.damage_type)
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/obj/structure/blob/Crossed(var/mob/living/L, oldloc)
|
/obj/structure/blob/Crossed(var/mob/living/L, oldloc)
|
||||||
..()
|
..()
|
||||||
L.blob_act(src)
|
L.blob_act(src)
|
||||||
@@ -159,23 +154,20 @@
|
|||||||
playsound(src.loc, 'sound/items/welder.ogg', 100, 1)
|
playsound(src.loc, 'sound/items/welder.ogg', 100, 1)
|
||||||
take_damage(W.force, W.damtype)
|
take_damage(W.force, W.damtype)
|
||||||
|
|
||||||
/obj/structure/blob/attack_animal(mob/living/simple_animal/M as mob)
|
/obj/structure/blob/attack_animal(mob/living/simple_animal/M)
|
||||||
M.changeNext_move(CLICK_CD_MELEE)
|
if(ROLE_BLOB in M.faction) //sorry, but you can't kill the blob as a blobbernaut
|
||||||
M.do_attack_animation(src)
|
return
|
||||||
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
|
..()
|
||||||
visible_message("<span class='danger'>\The [M] has attacked the [src.name]!</span>")
|
|
||||||
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
|
||||||
take_damage(damage, BRUTE)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/structure/blob/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
|
/obj/structure/blob/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
M.changeNext_move(CLICK_CD_MELEE)
|
switch(damage_type)
|
||||||
M.do_attack_animation(src)
|
if(BRUTE)
|
||||||
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
|
if(damage_amount)
|
||||||
visible_message("<span class='danger'>[M] has slashed the [src.name]!</span>")
|
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, TRUE)
|
||||||
var/damage = rand(15, 30)
|
else
|
||||||
take_damage(damage, BRUTE)
|
playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
|
||||||
return
|
if(BURN)
|
||||||
|
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/structure/blob/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
/obj/structure/blob/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||||
switch(damage_type)
|
switch(damage_type)
|
||||||
|
|||||||
@@ -78,9 +78,6 @@
|
|||||||
take_damage(I.force, I.damtype)
|
take_damage(I.force, I.damtype)
|
||||||
playsound(loc, I.hitsound, 80, 1)
|
playsound(loc, I.hitsound, 80, 1)
|
||||||
|
|
||||||
/obj/structure/cult/functional/bullet_act(var/obj/item/projectile/P)
|
|
||||||
take_damage(P.damage, P.damage_type)
|
|
||||||
|
|
||||||
/obj/structure/cult/functional/attack_hand(mob/living/user)
|
/obj/structure/cult/functional/attack_hand(mob/living/user)
|
||||||
if(!iscultist(user))
|
if(!iscultist(user))
|
||||||
to_chat(user, "[heathen_message]")
|
to_chat(user, "[heathen_message]")
|
||||||
@@ -260,6 +257,12 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
|
|||||||
density = 1
|
density = 1
|
||||||
anchored = 1.0
|
anchored = 1.0
|
||||||
|
|
||||||
|
/obj/effect/gateway/singularity_act()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/effect/gateway/singularity_pull()
|
||||||
|
return
|
||||||
|
|
||||||
/obj/effect/gateway/Bumped(mob/M as mob|obj)
|
/obj/effect/gateway/Bumped(mob/M as mob|obj)
|
||||||
spawn(0)
|
spawn(0)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -487,6 +487,13 @@
|
|||||||
. = ..()
|
. = ..()
|
||||||
set_light(lon_range)
|
set_light(lon_range)
|
||||||
|
|
||||||
|
/obj/structure/swarmer/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
|
switch(damage_type)
|
||||||
|
if(BRUTE)
|
||||||
|
playsound(src, 'sound/weapons/egloves.ogg', 80, TRUE)
|
||||||
|
if(BURN)
|
||||||
|
playsound(src, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/structure/swarmer/disintegration
|
/obj/structure/swarmer/disintegration
|
||||||
icon_state = "disintegrate"
|
icon_state = "disintegrate"
|
||||||
|
|
||||||
@@ -509,12 +516,6 @@
|
|||||||
spawn(5)
|
spawn(5)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/swarmer/bullet_act(obj/item/projectile/Proj)
|
|
||||||
if(Proj.damage)
|
|
||||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
|
||||||
take_damage(Proj.damage)
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/structure/swarmer/attackby(obj/item/I, mob/living/user, params)
|
/obj/structure/swarmer/attackby(obj/item/I, mob/living/user, params)
|
||||||
if(istype(I, /obj/item))
|
if(istype(I, /obj/item))
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
user.changeNext_move(CLICK_CD_MELEE)
|
||||||
@@ -526,21 +527,8 @@
|
|||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/swarmer/blob_act()
|
|
||||||
qdel(src)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/structure/swarmer/emp_act()
|
/obj/structure/swarmer/emp_act()
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
|
||||||
/obj/structure/swarmer/attack_animal(mob/living/user)
|
|
||||||
if(isanimal(user))
|
|
||||||
var/mob/living/simple_animal/S = user
|
|
||||||
S.do_attack_animation(src)
|
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
|
||||||
if(S.melee_damage_type == BRUTE || S.melee_damage_type == BURN)
|
|
||||||
take_damage(rand(S.melee_damage_lower, S.melee_damage_upper))
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/structure/swarmer/trap
|
/obj/structure/swarmer/trap
|
||||||
name = "swarmer trap"
|
name = "swarmer trap"
|
||||||
|
|||||||
@@ -101,6 +101,11 @@
|
|||||||
var/mob/living/spawner
|
var/mob/living/spawner
|
||||||
invisibility = 1
|
invisibility = 1
|
||||||
|
|
||||||
|
/obj/effect/snare/singularity_act()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/effect/snare/singularity_pull()
|
||||||
|
return
|
||||||
|
|
||||||
/obj/item/effect/snare/Crossed(AM as mob|obj, oldloc)
|
/obj/item/effect/snare/Crossed(AM as mob|obj, oldloc)
|
||||||
if(isliving(AM))
|
if(isliving(AM))
|
||||||
|
|||||||
@@ -76,8 +76,8 @@
|
|||||||
/mob/living/simple_animal/revenant/ex_act(severity)
|
/mob/living/simple_animal/revenant/ex_act(severity)
|
||||||
return 1 //Immune to the effects of explosions.
|
return 1 //Immune to the effects of explosions.
|
||||||
|
|
||||||
/mob/living/simple_animal/revenant/blob_act()
|
/mob/living/simple_animal/revenant/blob_act(obj/structure/blob/B)
|
||||||
return 1 //blah blah blobs aren't in tune with the spirit world, or something.
|
return //blah blah blobs aren't in tune with the spirit world, or something.
|
||||||
|
|
||||||
/mob/living/simple_animal/revenant/singularity_act()
|
/mob/living/simple_animal/revenant/singularity_act()
|
||||||
return //don't walk into the singularity expecting to find corpses, okay?
|
return //don't walk into the singularity expecting to find corpses, okay?
|
||||||
|
|||||||
@@ -336,12 +336,10 @@ var/bomb_set
|
|||||||
/obj/machinery/nuclearbomb/ex_act(severity)
|
/obj/machinery/nuclearbomb/ex_act(severity)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/nuclearbomb/blob_act()
|
/obj/machinery/nuclearbomb/blob_act(obj/structure/blob/B)
|
||||||
if(timing == -1.0)
|
if(timing == -1.0)
|
||||||
return
|
return
|
||||||
else
|
qdel(src)
|
||||||
return ..()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/nuclearbomb/tesla_act(power, explosive)
|
/obj/machinery/nuclearbomb/tesla_act(power, explosive)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -174,6 +174,12 @@
|
|||||||
return
|
return
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
/obj/effect/rend/singularity_pull()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/effect/rend/singularity_pull()
|
||||||
|
return
|
||||||
|
|
||||||
/obj/item/veilrender/vealrender
|
/obj/item/veilrender/vealrender
|
||||||
name = "veal render"
|
name = "veal render"
|
||||||
desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm."
|
desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm."
|
||||||
|
|||||||
@@ -49,12 +49,6 @@
|
|||||||
if(3.0)
|
if(3.0)
|
||||||
if(prob(25))
|
if(prob(25))
|
||||||
src.density = 0
|
src.density = 0
|
||||||
else
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/optable/blob_act()
|
|
||||||
if(prob(75))
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/machinery/optable/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
|
/obj/machinery/optable/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
|
||||||
if(user.a_intent == INTENT_HARM)
|
if(user.a_intent == INTENT_HARM)
|
||||||
|
|||||||
@@ -264,15 +264,6 @@
|
|||||||
add_fingerprint(usr)
|
add_fingerprint(usr)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/machinery/sleeper/blob_act()
|
|
||||||
if(prob(75))
|
|
||||||
var/atom/movable/A = occupant
|
|
||||||
go_out()
|
|
||||||
A.blob_act()
|
|
||||||
qdel(src)
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/sleeper/attackby(obj/item/I, mob/user, params)
|
/obj/machinery/sleeper/attackby(obj/item/I, mob/user, params)
|
||||||
if(istype(I, /obj/item/reagent_containers/glass))
|
if(istype(I, /obj/item/reagent_containers/glass))
|
||||||
if(!beaker)
|
if(!beaker)
|
||||||
|
|||||||
@@ -194,28 +194,12 @@
|
|||||||
A.forceMove(loc)
|
A.forceMove(loc)
|
||||||
A.ex_act(severity)
|
A.ex_act(severity)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/bodyscanner/blob_act()
|
|
||||||
if(prob(50))
|
|
||||||
var/atom/movable/A = occupant
|
|
||||||
go_out()
|
|
||||||
A.blob_act()
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/machinery/bodyscanner/narsie_act()
|
/obj/machinery/bodyscanner/narsie_act()
|
||||||
go_out()
|
go_out()
|
||||||
new /obj/effect/gibspawner/generic(get_turf(loc)) //I REPLACE YOUR TECHNOLOGY WITH FLESH!
|
new /obj/effect/gibspawner/generic(get_turf(loc)) //I REPLACE YOUR TECHNOLOGY WITH FLESH!
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/machinery/bodyscanner/attack_animal(var/mob/living/simple_animal/M)//Stop putting hostile mobs in things guise
|
|
||||||
if(M.environment_smash)
|
|
||||||
M.do_attack_animation(src)
|
|
||||||
visible_message("<span class='danger'>[M.name] smashes [src] apart!</span>")
|
|
||||||
go_out()
|
|
||||||
qdel(src)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/body_scanconsole
|
/obj/machinery/body_scanconsole
|
||||||
name = "Body Scanner Console"
|
name = "Body Scanner Console"
|
||||||
icon = 'icons/obj/cryogenic2.dmi'
|
icon = 'icons/obj/cryogenic2.dmi'
|
||||||
@@ -269,20 +253,6 @@
|
|||||||
if(prob(50))
|
if(prob(50))
|
||||||
//SN src = null
|
//SN src = null
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
|
||||||
else
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/body_scanconsole/blob_act()
|
|
||||||
if(prob(50))
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/machinery/body_scanconsole/attack_animal(var/mob/living/simple_animal/M)//Stop putting hostile mobs in things guise
|
|
||||||
if(M.environment_smash)
|
|
||||||
M.do_attack_animation(src)
|
|
||||||
visible_message("<span class='danger'>[M.name] smashes [src] apart!</span>")
|
|
||||||
qdel(src)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/body_scanconsole/proc/findscanner()
|
/obj/machinery/body_scanconsole/proc/findscanner()
|
||||||
for(dir in list(NORTH,EAST,SOUTH,WEST))
|
for(dir in list(NORTH,EAST,SOUTH,WEST))
|
||||||
|
|||||||
@@ -326,18 +326,6 @@ update_flag
|
|||||||
return GM.return_pressure()
|
return GM.return_pressure()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
/obj/machinery/portable_atmospherics/canister/blob_act()
|
|
||||||
src.health -= 200
|
|
||||||
healthcheck()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/portable_atmospherics/canister/bullet_act(var/obj/item/projectile/Proj)
|
|
||||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
|
||||||
if(Proj.damage)
|
|
||||||
src.health -= round(Proj.damage / 2)
|
|
||||||
healthcheck()
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/machinery/portable_atmospherics/canister/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
|
/obj/machinery/portable_atmospherics/canister/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
user.changeNext_move(CLICK_CD_MELEE)
|
||||||
if(iswelder(W) && src.destroyed)
|
if(iswelder(W) && src.destroyed)
|
||||||
@@ -385,9 +373,6 @@ update_flag
|
|||||||
src.add_hiddenprint(user)
|
src.add_hiddenprint(user)
|
||||||
return src.attack_hand(user)
|
return src.attack_hand(user)
|
||||||
|
|
||||||
/obj/machinery/portable_atmospherics/canister/attack_alien(mob/living/carbon/alien/humanoid/user)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/portable_atmospherics/canister/attack_ghost(var/mob/user as mob)
|
/obj/machinery/portable_atmospherics/canister/attack_ghost(var/mob/user as mob)
|
||||||
return src.ui_interact(user)
|
return src.ui_interact(user)
|
||||||
|
|
||||||
|
|||||||
@@ -139,6 +139,11 @@
|
|||||||
new /obj/item/pipe_meter(src.loc)
|
new /obj/item/pipe_meter(src.loc)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/machinery/meter/singularity_pull(S, current_size)
|
||||||
|
..()
|
||||||
|
if(current_size >= STAGE_FIVE)
|
||||||
|
deconstruct()
|
||||||
|
|
||||||
// TURF METER - REPORTS A TILE'S AIR CONTENTS
|
// TURF METER - REPORTS A TILE'S AIR CONTENTS
|
||||||
|
|
||||||
/obj/machinery/meter/turf/New()
|
/obj/machinery/meter/turf/New()
|
||||||
|
|||||||
@@ -118,6 +118,11 @@
|
|||||||
view_range = num
|
view_range = num
|
||||||
cameranet.updateVisibility(src, 0)
|
cameranet.updateVisibility(src, 0)
|
||||||
|
|
||||||
|
/obj/machinery/camera/singularity_pull(S, current_size)
|
||||||
|
if (status && current_size >= STAGE_FIVE) // If the singulo is strong enough to pull anchored objects and the camera is still active, turn off the camera as it gets ripped off the wall.
|
||||||
|
toggle_cam(null, 0)
|
||||||
|
..()
|
||||||
|
|
||||||
/obj/machinery/camera/attackby(obj/item/I, mob/living/user, params)
|
/obj/machinery/camera/attackby(obj/item/I, mob/living/user, params)
|
||||||
var/msg = "<span class='notice'>You attach [I] into the assembly inner circuits.</span>"
|
var/msg = "<span class='notice'>You attach [I] into the assembly inner circuits.</span>"
|
||||||
var/msg2 = "<span class='notice'>The camera already has that upgrade!</span>"
|
var/msg2 = "<span class='notice'>The camera already has that upgrade!</span>"
|
||||||
|
|||||||
@@ -192,9 +192,9 @@
|
|||||||
emergencyShutdown()
|
emergencyShutdown()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/computer/HolodeckControl/blob_act()
|
/obj/machinery/computer/HolodeckControl/blob_act(obj/structure/blob/B)
|
||||||
emergencyShutdown()
|
emergencyShutdown()
|
||||||
..()
|
return ..()
|
||||||
|
|
||||||
/obj/machinery/computer/HolodeckControl/process()
|
/obj/machinery/computer/HolodeckControl/process()
|
||||||
for(var/item in holographic_items) // do this first, to make sure people don't take items out when power is down.
|
for(var/item in holographic_items) // do this first, to make sure people don't take items out when power is down.
|
||||||
@@ -505,6 +505,18 @@
|
|||||||
else
|
else
|
||||||
return ..(mover, target, height)
|
return ..(mover, target, height)
|
||||||
|
|
||||||
|
/obj/structure/holohoop/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
|
||||||
|
if(isitem(AM) && !istype(AM,/obj/item/projectile))
|
||||||
|
if(prob(50))
|
||||||
|
AM.forceMove(get_turf(src))
|
||||||
|
visible_message("<span class='warning'>Swish! [AM] lands in [src].</span>")
|
||||||
|
return
|
||||||
|
else
|
||||||
|
visible_message("<span class='danger'>[AM] bounces off of [src]'s rim!</span>")
|
||||||
|
return ..()
|
||||||
|
else
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/machinery/readybutton
|
/obj/machinery/readybutton
|
||||||
name = "Ready Declaration Device"
|
name = "Ready Declaration Device"
|
||||||
desc = "This device is used to declare ready. If all devices in an area are ready, the event will begin!"
|
desc = "This device is used to declare ready. If all devices in an area are ready, the event will begin!"
|
||||||
|
|||||||
@@ -177,6 +177,17 @@
|
|||||||
feedback_inc("cyborg_ais_created",1)
|
feedback_inc("cyborg_ais_created",1)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/structure/AIcore/deconstruct(disassembled = TRUE)
|
||||||
|
if(state == 4)
|
||||||
|
new /obj/item/stack/sheet/rglass(loc, 2)
|
||||||
|
if(state >= 3)
|
||||||
|
new /obj/item/stack/cable_coil(loc, 5)
|
||||||
|
if(circuit)
|
||||||
|
circuit.forceMove(loc)
|
||||||
|
circuit = null
|
||||||
|
new /obj/item/stack/sheet/plasteel(loc, 4)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/AIcore/deactivated
|
/obj/structure/AIcore/deactivated
|
||||||
name = "Inactive AI"
|
name = "Inactive AI"
|
||||||
icon = 'icons/mob/AI.dmi'
|
icon = 'icons/mob/AI.dmi'
|
||||||
|
|||||||
@@ -55,19 +55,6 @@
|
|||||||
verbs -= x
|
verbs -= x
|
||||||
set_broken()
|
set_broken()
|
||||||
|
|
||||||
/obj/machinery/computer/bullet_act(var/obj/item/projectile/Proj)
|
|
||||||
if(prob(Proj.damage))
|
|
||||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
|
||||||
set_broken()
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/machinery/computer/blob_act()
|
|
||||||
if(prob(75))
|
|
||||||
for(var/x in verbs)
|
|
||||||
verbs -= x
|
|
||||||
set_broken()
|
|
||||||
density = 0
|
|
||||||
|
|
||||||
/obj/machinery/computer/extinguish_light()
|
/obj/machinery/computer/extinguish_light()
|
||||||
set_light(0)
|
set_light(0)
|
||||||
visible_message("<span class='danger'>[src] grows dim, its screen barely readable.</span>")
|
visible_message("<span class='danger'>[src] grows dim, its screen barely readable.</span>")
|
||||||
@@ -96,6 +83,16 @@
|
|||||||
else
|
else
|
||||||
set_light(light_range_on, light_power_on)
|
set_light(light_range_on, light_power_on)
|
||||||
|
|
||||||
|
/obj/machinery/computer/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
|
switch(damage_type)
|
||||||
|
if(BRUTE)
|
||||||
|
if(stat & BROKEN)
|
||||||
|
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE)
|
||||||
|
else
|
||||||
|
playsound(src.loc, 'sound/effects/glasshit.ogg', 75, TRUE)
|
||||||
|
if(BURN)
|
||||||
|
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/machinery/computer/proc/set_broken()
|
/obj/machinery/computer/proc/set_broken()
|
||||||
if(!(resistance_flags & INDESTRUCTIBLE))
|
if(!(resistance_flags & INDESTRUCTIBLE))
|
||||||
stat |= BROKEN
|
stat |= BROKEN
|
||||||
@@ -136,24 +133,4 @@
|
|||||||
A.icon_state = "4"
|
A.icon_state = "4"
|
||||||
qdel(src)
|
qdel(src)
|
||||||
else
|
else
|
||||||
attack_hand(user)
|
attack_hand(user)
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/attack_alien(mob/living/user)
|
|
||||||
if(isalien(user) && user.a_intent == INTENT_HELP)
|
|
||||||
var/mob/living/carbon/alien/humanoid/xeno = user
|
|
||||||
if(xeno.has_fine_manipulation)
|
|
||||||
return attack_hand(user)
|
|
||||||
|
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
|
||||||
user.do_attack_animation(src)
|
|
||||||
if(circuit)
|
|
||||||
if(prob(80))
|
|
||||||
user.visible_message("<span class='danger'>[user.name] smashes the [src.name] with its claws.</span>",\
|
|
||||||
"<span class='danger'>You smash the [src.name] with your claws.</span>",\
|
|
||||||
"<span class='danger'>You hear a smashing sound.</span>")
|
|
||||||
set_broken()
|
|
||||||
return
|
|
||||||
user.visible_message("<span class='danger'>[user.name] smashes against the [src.name] with its claws.</span>",\
|
|
||||||
"<span class='danger'>You smash against the [src.name] with your claws.</span>",\
|
|
||||||
"<span class='danger'>You hear a clicking sound.</span>")
|
|
||||||
@@ -19,46 +19,11 @@
|
|||||||
var/drop_amount = 3
|
var/drop_amount = 3
|
||||||
var/stacktype = /obj/item/stack/sheet/metal
|
var/stacktype = /obj/item/stack/sheet/metal
|
||||||
|
|
||||||
/obj/structure/barricade/blob_act(obj/structure/blob/B) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable
|
|
||||||
take_damage(400, BRUTE, "melee", 0, get_dir(src, B))
|
|
||||||
|
|
||||||
/obj/structure/barricade/ex_act(severity) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable
|
|
||||||
if(resistance_flags & INDESTRUCTIBLE)
|
|
||||||
return
|
|
||||||
switch(severity)
|
|
||||||
if(1)
|
|
||||||
obj_integrity = 0
|
|
||||||
qdel(src)
|
|
||||||
if(2)
|
|
||||||
take_damage(rand(100, 250), BRUTE, "bomb", 0)
|
|
||||||
if(3)
|
|
||||||
take_damage(rand(10, 90), BRUTE, "bomb", 0)
|
|
||||||
|
|
||||||
/obj/structure/barricade/mech_melee_attack(obj/mecha/M) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable
|
|
||||||
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>")
|
|
||||||
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/structure/barricade/deconstruct(disassembled = TRUE)
|
/obj/structure/barricade/deconstruct(disassembled = TRUE)
|
||||||
make_debris()
|
make_debris()
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/barricade/proc/make_debris()
|
/obj/structure/barricade/proc/make_debris()
|
||||||
if(stacktype)
|
if(stacktype)
|
||||||
new stacktype(get_turf(src), drop_amount)
|
new stacktype(get_turf(src), drop_amount)
|
||||||
|
|||||||
@@ -648,6 +648,11 @@ About the new airlock wires panel:
|
|||||||
do_sparks(5, 1, src)
|
do_sparks(5, 1, src)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/obj/machinery/door/airlock/attack_animal(mob/user)
|
||||||
|
. = ..()
|
||||||
|
if(isElectrified())
|
||||||
|
shock(user, 100)
|
||||||
|
|
||||||
/obj/machinery/door/airlock/attack_hand(mob/user)
|
/obj/machinery/door/airlock/attack_hand(mob/user)
|
||||||
if(shock_user(user, 100))
|
if(shock_user(user, 100))
|
||||||
return
|
return
|
||||||
@@ -1230,11 +1235,11 @@ About the new airlock wires panel:
|
|||||||
var/time_to_open = 5
|
var/time_to_open = 5
|
||||||
if(arePowerSystemsOn())
|
if(arePowerSystemsOn())
|
||||||
time_to_open = 50 //Powered airlocks take longer to open, and are loud.
|
time_to_open = 50 //Powered airlocks take longer to open, and are loud.
|
||||||
playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, 1)
|
playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE)
|
||||||
|
|
||||||
|
|
||||||
if(do_after(user, time_to_open, target = src))
|
if(do_after(user, time_to_open, TRUE, src))
|
||||||
if(density && !open(1)) //The airlock is still closed, but something prevented it opening. (Another player noticed and bolted/welded the airlock in time!)
|
if(density && !open(2)) //The airlock is still closed, but something prevented it opening. (Another player noticed and bolted/welded the airlock in time!)
|
||||||
to_chat(user, "<span class='warning'>Despite your efforts, [src] managed to resist your attempts to open it!</span>")
|
to_chat(user, "<span class='warning'>Despite your efforts, [src] managed to resist your attempts to open it!</span>")
|
||||||
|
|
||||||
/obj/machinery/door/airlock/power_change() //putting this is obj/machinery/door itself makes non-airlock doors turn invisible for some reason
|
/obj/machinery/door/airlock/power_change() //putting this is obj/machinery/door itself makes non-airlock doors turn invisible for some reason
|
||||||
|
|||||||
@@ -213,13 +213,13 @@
|
|||||||
switch(damage_type)
|
switch(damage_type)
|
||||||
if(BRUTE)
|
if(BRUTE)
|
||||||
if(glass)
|
if(glass)
|
||||||
playsound(loc, 'sound/effects/glasshit.ogg', 90, 1)
|
playsound(loc, 'sound/effects/glasshit.ogg', 90, TRUE)
|
||||||
else if(damage_amount)
|
else if(damage_amount)
|
||||||
playsound(loc, 'sound/weapons/smash.ogg', 50, 1)
|
playsound(loc, 'sound/weapons/smash.ogg', 50, TRUE)
|
||||||
else
|
else
|
||||||
playsound(loc, 'sound/weapons/tap.ogg', 50, 1)
|
playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
|
||||||
if(BURN)
|
if(BURN)
|
||||||
playsound(loc, 'sound/items/welder.ogg', 100, 1)
|
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/machinery/door/emag_act(mob/user)
|
/obj/machinery/door/emag_act(mob/user)
|
||||||
if(density)
|
if(density)
|
||||||
@@ -372,32 +372,5 @@
|
|||||||
if(!stat) //Opens only powered doors.
|
if(!stat) //Opens only powered doors.
|
||||||
open() //Open everything!
|
open() //Open everything!
|
||||||
|
|
||||||
/obj/machinery/door/blob_act(obj/structure/blob/B)
|
|
||||||
if(isturf(loc))
|
|
||||||
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))
|
|
||||||
|
|
||||||
/obj/machinery/door/ex_act(severity, target)
|
|
||||||
if(severity)
|
|
||||||
severity = max(1, severity - 1)
|
|
||||||
else
|
|
||||||
severity = 0
|
|
||||||
if(resistance_flags & INDESTRUCTIBLE)
|
|
||||||
return
|
|
||||||
if(target == src)
|
|
||||||
obj_integrity = 0
|
|
||||||
qdel(src)
|
|
||||||
return
|
|
||||||
switch(severity)
|
|
||||||
if(1)
|
|
||||||
obj_integrity = 0
|
|
||||||
qdel(src)
|
|
||||||
if(2)
|
|
||||||
take_damage(rand(100, 250), BRUTE, "bomb", 0)
|
|
||||||
if(3)
|
|
||||||
take_damage(rand(10, 90), BRUTE, "bomb", 0)
|
|
||||||
|
|
||||||
/obj/machinery/door/GetExplosionBlock()
|
/obj/machinery/door/GetExplosionBlock()
|
||||||
return density ? real_explosion_block : 0
|
return density ? real_explosion_block : 0
|
||||||
|
|||||||
@@ -180,10 +180,9 @@
|
|||||||
/obj/machinery/door/window/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
/obj/machinery/door/window/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
switch(damage_type)
|
switch(damage_type)
|
||||||
if(BRUTE)
|
if(BRUTE)
|
||||||
playsound(loc, 'sound/effects/glasshit.ogg', 90, 1)
|
playsound(src, 'sound/effects/glasshit.ogg', 90, TRUE)
|
||||||
if(BURN)
|
if(BURN)
|
||||||
playsound(loc, 'sound/items/welder.ogg', 100, 1)
|
playsound(src, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/door/window/deconstruct(disassembled = TRUE)
|
/obj/machinery/door/window/deconstruct(disassembled = TRUE)
|
||||||
if(can_deconstruct && !disassembled)
|
if(can_deconstruct && !disassembled)
|
||||||
|
|||||||
@@ -150,6 +150,11 @@ FIRE ALARM
|
|||||||
if(prob(33))
|
if(prob(33))
|
||||||
alarm()
|
alarm()
|
||||||
|
|
||||||
|
/obj/machinery/firealarm/singularity_pull(S, current_size)
|
||||||
|
if (current_size >= STAGE_FIVE) // If the singulo is strong enough to pull anchored objects, the fire alarm experiences integrity failure
|
||||||
|
deconstruct()
|
||||||
|
..()
|
||||||
|
|
||||||
/obj/machinery/firealarm/process()//Note: this processing was mostly phased out due to other code, and only runs when needed
|
/obj/machinery/firealarm/process()//Note: this processing was mostly phased out due to other code, and only runs when needed
|
||||||
if(stat & (NOPOWER|BROKEN))
|
if(stat & (NOPOWER|BROKEN))
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -188,13 +188,7 @@ Class Procs:
|
|||||||
if(3.0)
|
if(3.0)
|
||||||
if(prob(25))
|
if(prob(25))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
|
||||||
else
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/blob_act()
|
|
||||||
if(prob(50))
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
//sets the use_power var and then forces an area power update
|
//sets the use_power var and then forces an area power update
|
||||||
/obj/machinery/proc/update_use_power(var/new_use_power)
|
/obj/machinery/proc/update_use_power(var/new_use_power)
|
||||||
|
|||||||
@@ -113,9 +113,6 @@
|
|||||||
/obj/machinery/navbeacon/attack_ai(mob/user)
|
/obj/machinery/navbeacon/attack_ai(mob/user)
|
||||||
interact(user, 1)
|
interact(user, 1)
|
||||||
|
|
||||||
/obj/machinery/navbeacon/attack_animal()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/navbeacon/attack_hand(mob/user)
|
/obj/machinery/navbeacon/attack_hand(mob/user)
|
||||||
interact(user, 0)
|
interact(user, 0)
|
||||||
|
|
||||||
|
|||||||
@@ -615,6 +615,16 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
|||||||
update_icon()
|
update_icon()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
/obj/machinery/newscaster/play_attack_sound(damage, damage_type = BRUTE, damage_flag = 0)
|
||||||
|
switch(damage_type)
|
||||||
|
if(BRUTE)
|
||||||
|
if(stat & BROKEN)
|
||||||
|
playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, TRUE)
|
||||||
|
else
|
||||||
|
playsound(loc, 'sound/effects/glasshit.ogg', 90, TRUE)
|
||||||
|
if(BURN)
|
||||||
|
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/machinery/newscaster/proc/AttachPhoto(mob/user)
|
/obj/machinery/newscaster/proc/AttachPhoto(mob/user)
|
||||||
if(photo)
|
if(photo)
|
||||||
if(!issilicon(user))
|
if(!issilicon(user))
|
||||||
|
|||||||
@@ -77,21 +77,19 @@
|
|||||||
else
|
else
|
||||||
icon_state = "[lasercolor]grey_target_prism"
|
icon_state = "[lasercolor]grey_target_prism"
|
||||||
|
|
||||||
/obj/machinery/porta_turret/tag/bullet_act(obj/item/projectile/Proj)
|
/obj/machinery/porta_turret/tag/bullet_act(obj/item/projectile/P)
|
||||||
..()
|
..()
|
||||||
|
if(!disabled)
|
||||||
if(lasercolor == "b" && disabled == 0)
|
if(lasercolor == "b")
|
||||||
if(istype(Proj, /obj/item/gun/energy/laser/tag/red))
|
if(istype(P, /obj/item/projectile/beam/lasertag/redtag))
|
||||||
disabled = 1
|
disabled = TRUE
|
||||||
qdel(Proj) // qdel
|
spawn(100)
|
||||||
sleep(100)
|
disabled = FALSE
|
||||||
disabled = 0
|
else if(lasercolor == "r")
|
||||||
if(lasercolor == "r" && disabled == 0)
|
if(istype(P, /obj/item/projectile/beam/lasertag/bluetag))
|
||||||
if(istype(Proj, /obj/item/gun/energy/laser/tag/blue))
|
disabled = TRUE
|
||||||
disabled = 1
|
spawn(100)
|
||||||
qdel(Proj) // qdel
|
disabled = FALSE
|
||||||
sleep(100)
|
|
||||||
disabled = 0
|
|
||||||
|
|
||||||
/obj/machinery/porta_turret/tag/assess_living(var/mob/living/L)
|
/obj/machinery/porta_turret/tag/assess_living(var/mob/living/L)
|
||||||
if(!L)
|
if(!L)
|
||||||
|
|||||||
@@ -415,29 +415,6 @@ var/list/turret_icons
|
|||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/porta_turret/attack_animal(mob/living/simple_animal/M)
|
|
||||||
M.changeNext_move(CLICK_CD_MELEE)
|
|
||||||
M.do_attack_animation(src)
|
|
||||||
if(M.melee_damage_upper == 0 || (M.melee_damage_type != BRUTE && M.melee_damage_type != BURN))
|
|
||||||
return
|
|
||||||
if(!(stat & BROKEN))
|
|
||||||
visible_message("<span class='danger'>[M] [M.attacktext] [src]!</span>")
|
|
||||||
take_damage(M.melee_damage_upper)
|
|
||||||
else
|
|
||||||
to_chat(M, "<span class='danger'>That object is useless to you.</span>")
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/porta_turret/attack_alien(mob/living/carbon/alien/humanoid/M)
|
|
||||||
M.changeNext_move(CLICK_CD_MELEE)
|
|
||||||
M.do_attack_animation(src)
|
|
||||||
if(!(stat & BROKEN))
|
|
||||||
playsound(src.loc, 'sound/weapons/slash.ogg', 25, 1, -1)
|
|
||||||
visible_message("<span class='danger'>[M] has slashed at [src]!</span>")
|
|
||||||
take_damage(15)
|
|
||||||
else
|
|
||||||
to_chat(M, "<span class='noticealien'>That object is useless to you.</span>")
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/porta_turret/emag_act(user as mob)
|
/obj/machinery/porta_turret/emag_act(user as mob)
|
||||||
if(!emagged)
|
if(!emagged)
|
||||||
//Emagging the turret makes it go bonkers and stun everyone. It also makes
|
//Emagging the turret makes it go bonkers and stun everyone. It also makes
|
||||||
@@ -452,21 +429,6 @@ var/list/turret_icons
|
|||||||
sleep(60) //6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit
|
sleep(60) //6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit
|
||||||
enabled = 1 //turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here
|
enabled = 1 //turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here
|
||||||
|
|
||||||
/obj/machinery/porta_turret/bullet_act(obj/item/projectile/Proj)
|
|
||||||
if(Proj.damage_type == STAMINA)
|
|
||||||
return
|
|
||||||
|
|
||||||
if(enabled)
|
|
||||||
if(!attacked && !emagged)
|
|
||||||
attacked = 1
|
|
||||||
spawn(60)
|
|
||||||
attacked = 0
|
|
||||||
|
|
||||||
..()
|
|
||||||
|
|
||||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
|
||||||
take_damage(Proj.damage)
|
|
||||||
|
|
||||||
/obj/machinery/porta_turret/emp_act(severity)
|
/obj/machinery/porta_turret/emp_act(severity)
|
||||||
if(enabled && emp_vulnerable)
|
if(enabled && emp_vulnerable)
|
||||||
//if the turret is on, the EMP no matter how severe disables the turret for a while
|
//if the turret is on, the EMP no matter how severe disables the turret for a while
|
||||||
|
|||||||
@@ -83,29 +83,12 @@
|
|||||||
A.forceMove(src.loc)
|
A.forceMove(src.loc)
|
||||||
A.ex_act(severity)
|
A.ex_act(severity)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/recharge_station/blob_act()
|
|
||||||
if(prob(50))
|
|
||||||
var/atom/movable/A = occupant
|
|
||||||
go_out()
|
|
||||||
A.blob_act()
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/machinery/recharge_station/narsie_act()
|
/obj/machinery/recharge_station/narsie_act()
|
||||||
go_out()
|
go_out()
|
||||||
new /obj/effect/gibspawner/generic(get_turf(loc)) //I REPLACE YOUR TECHNOLOGY WITH FLESH!
|
new /obj/effect/gibspawner/generic(get_turf(loc)) //I REPLACE YOUR TECHNOLOGY WITH FLESH!
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/recharge_station/attack_animal(var/mob/living/simple_animal/M)//Stop putting hostile mobs in things guise
|
|
||||||
if(M.environment_smash)
|
|
||||||
M.do_attack_animation(src)
|
|
||||||
visible_message("<span class='danger'>[M.name] smashes [src] apart!</span>")
|
|
||||||
go_out()
|
|
||||||
qdel(src)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/recharge_station/Bumped(var/mob/AM)
|
/obj/machinery/recharge_station/Bumped(var/mob/AM)
|
||||||
move_inside(AM)
|
move_inside(AM)
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,7 @@
|
|||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/shield/hitby(AM as mob|obj)
|
/obj/machinery/shield/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
|
||||||
..()
|
..()
|
||||||
var/tforce = 0
|
var/tforce = 0
|
||||||
if(ismob(AM))
|
if(ismob(AM))
|
||||||
|
|||||||
@@ -213,16 +213,6 @@
|
|||||||
var/datum/data/vending_product/record = R
|
var/datum/data/vending_product/record = R
|
||||||
.[record.product_path] += record.amount
|
.[record.product_path] += record.amount
|
||||||
|
|
||||||
/obj/machinery/vending/ex_act(severity) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable
|
|
||||||
switch(severity)
|
|
||||||
if(1)
|
|
||||||
obj_integrity = 0
|
|
||||||
qdel(src)
|
|
||||||
if(2)
|
|
||||||
take_damage(rand(100, 250), BRUTE, "bomb", 0)
|
|
||||||
if(3)
|
|
||||||
take_damage(rand(10, 90), BRUTE, "bomb", 0)
|
|
||||||
|
|
||||||
/obj/machinery/vending/deconstruct(disassembled = TRUE)
|
/obj/machinery/vending/deconstruct(disassembled = TRUE)
|
||||||
eject_item()
|
eject_item()
|
||||||
if(!refill_canister) //the non constructable vendors drop metal instead of a machine frame.
|
if(!refill_canister) //the non constructable vendors drop metal instead of a machine frame.
|
||||||
@@ -231,9 +221,6 @@
|
|||||||
else
|
else
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/vending/blob_act(obj/structure/blob/B) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable
|
|
||||||
take_damage(400, BRUTE, "melee", 0, get_dir(src, B))
|
|
||||||
|
|
||||||
/obj/machinery/vending/attackby(obj/item/I, mob/user, params)
|
/obj/machinery/vending/attackby(obj/item/I, mob/user, params)
|
||||||
if(currently_vending && vendor_account && !vendor_account.suspended)
|
if(currently_vending && vendor_account && !vendor_account.suspended)
|
||||||
var/paid = 0
|
var/paid = 0
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
var/dir_in = 2//What direction will the mech face when entered/powered on? Defaults to South.
|
var/dir_in = 2//What direction will the mech face when entered/powered on? Defaults to South.
|
||||||
var/normal_step_energy_drain = 10
|
var/normal_step_energy_drain = 10
|
||||||
var/step_energy_drain = 10
|
var/step_energy_drain = 10
|
||||||
|
var/melee_energy_drain = 15
|
||||||
var/overload_step_energy_drain_min = 100
|
var/overload_step_energy_drain_min = 100
|
||||||
var/health = 300 //health is health
|
var/health = 300 //health is health
|
||||||
var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
|
var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
|
||||||
@@ -235,24 +236,6 @@
|
|||||||
if(target.reagents.get_reagent_amount("toxin") + force < force*2)
|
if(target.reagents.get_reagent_amount("toxin") + force < force*2)
|
||||||
target.reagents.add_reagent("toxin", force/2.5)
|
target.reagents.add_reagent("toxin", force/2.5)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/atom/proc/mech_melee_attack(obj/mecha/M)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/mecha/mech_melee_attack(obj/mecha/M)
|
|
||||||
if(M.damtype =="brute")
|
|
||||||
playsound(src, 'sound/weapons/punch4.ogg', 50, 1)
|
|
||||||
else if(M.damtype == "fire")
|
|
||||||
playsound(src, 'sound/items/welder.ogg', 50, 1)
|
|
||||||
else
|
|
||||||
return
|
|
||||||
M.occupant_message("<span class='danger'>You hit [src].</span>")
|
|
||||||
visible_message("<span class='danger'>[src] has been hit by [M.name].</span>")
|
|
||||||
take_damage(M.force, damtype)
|
|
||||||
add_attack_logs(M.occupant, src, "Mecha-attacked with [M] (INTENT: [uppertext(M.occupant.a_intent)]) (DAMTYPE: [uppertext(M.damtype)])")
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/mecha/proc/range_action(atom/target)
|
/obj/mecha/proc/range_action(atom/target)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -575,7 +558,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/mecha/attack_alien(mob/living/user)
|
/obj/mecha/attack_alien(mob/living/user)
|
||||||
log_message("Attack by alien. Attacker - [user].")
|
log_message("Attack by alien. Attacker - [user].", color = "red")
|
||||||
playsound(src.loc, 'sound/weapons/slash.ogg', 100, TRUE)
|
playsound(src.loc, 'sound/weapons/slash.ogg', 100, TRUE)
|
||||||
attack_generic(user, 15, BRUTE, "melee", 0)
|
attack_generic(user, 15, BRUTE, "melee", 0)
|
||||||
|
|
||||||
@@ -894,6 +877,13 @@
|
|||||||
take_damage(round(I.force * dam_coeff), I.damtype)
|
take_damage(round(I.force * dam_coeff), I.damtype)
|
||||||
check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
|
check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
|
||||||
|
|
||||||
|
/obj/mecha/mech_melee_attack(obj/mecha/M)
|
||||||
|
if(!has_charge(melee_energy_drain))
|
||||||
|
return 0
|
||||||
|
use_power(melee_energy_drain)
|
||||||
|
if(M.damtype == BRUTE || M.damtype == BURN)
|
||||||
|
add_attack_logs(M.occupant, src, "Mecha-attacked with [M] (INTENT: [uppertext(M.occupant.a_intent)]) (DAMTYPE: [uppertext(M.damtype)])")
|
||||||
|
. = ..()
|
||||||
|
|
||||||
/obj/mecha/emag_act(mob/user)
|
/obj/mecha/emag_act(mob/user)
|
||||||
to_chat(user, "<span class='warning'>[src]'s ID slot rejects the card.</span>")
|
to_chat(user, "<span class='warning'>[src]'s ID slot rejects the card.</span>")
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/decal/mecha_wreckage/bullet_act(var/obj/item/projectile/Proj)
|
/obj/effect/decal/mecha_wreckage/bullet_act(obj/item/projectile/Proj)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,12 @@ var/list/obj/effect/bump_teleporter/BUMP_TELEPORTERS = list()
|
|||||||
BUMP_TELEPORTERS -= src
|
BUMP_TELEPORTERS -= src
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/obj/effect/bump_teleporter/singularity_act()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/effect/bump_teleporter/singularity_pull()
|
||||||
|
return
|
||||||
|
|
||||||
/obj/effect/bump_teleporter/Bumped(atom/user)
|
/obj/effect/bump_teleporter/Bumped(atom/user)
|
||||||
if(!ismob(user))
|
if(!ismob(user))
|
||||||
//user.loc = src.loc //Stop at teleporter location
|
//user.loc = src.loc //Stop at teleporter location
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
icon = 'icons/obj/chempuff.dmi'
|
icon = 'icons/obj/chempuff.dmi'
|
||||||
pass_flags = PASSTABLE | PASSGRILLE
|
pass_flags = PASSTABLE | PASSGRILLE
|
||||||
|
|
||||||
|
/obj/effect/decal/chempuff/blob_act(obj/structure/blob/B)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/effect/decal/snow
|
/obj/effect/decal/snow
|
||||||
name = "snow"
|
name = "snow"
|
||||||
density = FALSE
|
density = FALSE
|
||||||
|
|||||||
@@ -192,7 +192,7 @@
|
|||||||
move_update_air(T)
|
move_update_air(T)
|
||||||
|
|
||||||
/obj/structure/foamedmetal/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
/obj/structure/foamedmetal/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
playsound(loc, 'sound/weapons/tap.ogg', 100, 1)
|
playsound(src.loc, 'sound/weapons/tap.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/structure/foamedmetal/proc/updateicon()
|
/obj/structure/foamedmetal/proc/updateicon()
|
||||||
if(metal == MFOAM_ALUMINUM)
|
if(metal == MFOAM_ALUMINUM)
|
||||||
|
|||||||
@@ -15,12 +15,22 @@
|
|||||||
/obj/effect/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
|
/obj/effect/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
|
/obj/effect/singularity_act()
|
||||||
|
qdel(src)
|
||||||
|
return FALSE
|
||||||
|
|
||||||
/obj/effect/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE)
|
/obj/effect/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/acid_act()
|
/obj/effect/acid_act()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/effect/mech_melee_attack(obj/mecha/M)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
/obj/effect/blob_act(obj/structure/blob/B)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/effect/experience_pressure_difference()
|
/obj/effect/experience_pressure_difference()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -64,4 +74,8 @@
|
|||||||
if(reagents)
|
if(reagents)
|
||||||
reagents.temperature_reagents(exposed_temperature)
|
reagents.temperature_reagents(exposed_temperature)
|
||||||
if(!(resistance_flags & FIRE_PROOF)) //non fire proof decal or being burned by lava
|
if(!(resistance_flags & FIRE_PROOF)) //non fire proof decal or being burned by lava
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/effect/decal/blob_act(obj/structure/blob/B)
|
||||||
|
if(B && B.loc == loc)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
@@ -179,6 +179,10 @@
|
|||||||
if(prob(5))
|
if(prob(5))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/structure/glowshroom/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
|
if(damage_type == BURN && damage_amount)
|
||||||
|
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/structure/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
/obj/structure/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||||
..()
|
..()
|
||||||
if(exposed_temperature > 300)
|
if(exposed_temperature > 300)
|
||||||
|
|||||||
@@ -104,6 +104,16 @@
|
|||||||
tag = text("landmark*[]", name)
|
tag = text("landmark*[]", name)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/effect/landmark/singularity_act()
|
||||||
|
return
|
||||||
|
|
||||||
|
// Please stop bombing the Observer-Start landmark.
|
||||||
|
/obj/effect/landmark/ex_act()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/effect/landmark/singularity_pull()
|
||||||
|
return
|
||||||
|
|
||||||
/obj/effect/landmark/start
|
/obj/effect/landmark/start
|
||||||
name = "start"
|
name = "start"
|
||||||
icon = 'icons/mob/screen_gen.dmi'
|
icon = 'icons/mob/screen_gen.dmi'
|
||||||
|
|||||||
@@ -54,30 +54,6 @@
|
|||||||
health -= damage
|
health -= damage
|
||||||
healthcheck()
|
healthcheck()
|
||||||
|
|
||||||
/obj/structure/spider/attack_animal(mob/living/simple_animal/M)
|
|
||||||
if(M.melee_damage_upper == 0)
|
|
||||||
return
|
|
||||||
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
|
||||||
M.changeNext_move(CLICK_CD_MELEE)
|
|
||||||
M.do_attack_animation(src)
|
|
||||||
visible_message("<span class='danger'>\The [M] [M.attacktext] [src]!</span>")
|
|
||||||
health -= damage
|
|
||||||
healthcheck()
|
|
||||||
|
|
||||||
/obj/structure/spider/attack_alien(mob/living/carbon/alien/humanoid/M)
|
|
||||||
playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1)
|
|
||||||
visible_message("<span class='danger'>[M] has slashed at [src]!</span>", "<span class='userdanger'>[M] has slashed at [src]!</span>")
|
|
||||||
M.changeNext_move(CLICK_CD_MELEE)
|
|
||||||
M.do_attack_animation(src)
|
|
||||||
var/damage = rand(10, 20)
|
|
||||||
health -= damage
|
|
||||||
healthcheck()
|
|
||||||
|
|
||||||
/obj/structure/spider/bullet_act(obj/item/projectile/Proj)
|
|
||||||
..()
|
|
||||||
health -= Proj.damage
|
|
||||||
healthcheck()
|
|
||||||
|
|
||||||
/obj/structure/spider/proc/healthcheck()
|
/obj/structure/spider/proc/healthcheck()
|
||||||
if(health <= 0)
|
if(health <= 0)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
|||||||
var/health = null
|
var/health = null
|
||||||
var/hitsound = null
|
var/hitsound = null
|
||||||
var/usesound = null
|
var/usesound = null
|
||||||
|
var/throwhitsound
|
||||||
var/w_class = WEIGHT_CLASS_NORMAL
|
var/w_class = WEIGHT_CLASS_NORMAL
|
||||||
var/slot_flags = 0 //This is used to determine on which slots an item can fit.
|
var/slot_flags = 0 //This is used to determine on which slots an item can fit.
|
||||||
pass_flags = PASSTABLE
|
pass_flags = PASSTABLE
|
||||||
@@ -80,6 +81,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
|||||||
var/embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does when first embedded (this*w_class)
|
var/embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does when first embedded (this*w_class)
|
||||||
var/embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER //The coefficient of multiplication for the damage removing this without surgery causes (this*w_class)
|
var/embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER //The coefficient of multiplication for the damage removing this without surgery causes (this*w_class)
|
||||||
var/embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME //A time in ticks, multiplied by the w_class.
|
var/embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME //A time in ticks, multiplied by the w_class.
|
||||||
|
var/embedded_ignore_throwspeed_threshold = FALSE
|
||||||
|
|
||||||
var/toolspeed = 1 // If this item is a tool, the speed multiplier
|
var/toolspeed = 1 // If this item is a tool, the speed multiplier
|
||||||
|
|
||||||
@@ -135,6 +137,10 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
|||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
/obj/item/blob_act(obj/structure/blob/B)
|
||||||
|
if(B && B.loc == loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
/obj/item/ex_act(severity)
|
/obj/item/ex_act(severity)
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1.0)
|
if(1.0)
|
||||||
@@ -151,9 +157,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
|||||||
else
|
else
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/blob_act()
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/item/water_act(volume, temperature, source, method = TOUCH)
|
/obj/item/water_act(volume, temperature, source, method = TOUCH)
|
||||||
. = ..()
|
. = ..()
|
||||||
extinguish()
|
extinguish()
|
||||||
@@ -289,13 +292,13 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/item/attack_alien(mob/user as mob)
|
/obj/item/attack_alien(mob/user)
|
||||||
var/mob/living/carbon/alien/A = user
|
var/mob/living/carbon/alien/A = user
|
||||||
|
|
||||||
if(!A.has_fine_manipulation)
|
if(!A.has_fine_manipulation)
|
||||||
if(src in A.contents) // To stop Aliens having items stuck in their pockets
|
if(src in A.contents) // To stop Aliens having items stuck in their pockets
|
||||||
A.unEquip(src)
|
A.unEquip(src)
|
||||||
to_chat(user, "Your claws aren't capable of such fine manipulation.")
|
to_chat(user, "<span class='warning'>Your claws aren't capable of such fine manipulation!</span>")
|
||||||
return
|
return
|
||||||
attack_hand(A)
|
attack_hand(A)
|
||||||
|
|
||||||
@@ -552,10 +555,11 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/singularity_pull(S, current_size)
|
/obj/item/singularity_pull(S, current_size)
|
||||||
spawn(0) //this is needed or multiple items will be thrown sequentially and not simultaneously
|
..()
|
||||||
if(current_size >= STAGE_FOUR)
|
if(current_size >= STAGE_FOUR)
|
||||||
throw_at(S,14,3)
|
throw_at(S, 14, 3, spin = 0)
|
||||||
else ..()
|
else
|
||||||
|
return
|
||||||
|
|
||||||
/obj/item/throw_impact(atom/A)
|
/obj/item/throw_impact(atom/A)
|
||||||
if(A && !QDELETED(A))
|
if(A && !QDELETED(A))
|
||||||
@@ -621,9 +625,20 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
|||||||
if(H.slip(src, trip_stun, trip_weaken, trip_tiles, trip_walksafe, trip_any, trip_verb))
|
if(H.slip(src, trip_stun, trip_weaken, trip_tiles, trip_walksafe, trip_any, trip_verb))
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
|
/obj/item/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/item/attack_hulk(mob/living/carbon/human/user)
|
/obj/item/attack_hulk(mob/living/carbon/human/user)
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
|
/obj/item/attack_animal(mob/living/simple_animal/M)
|
||||||
|
if(can_be_hit)
|
||||||
|
return ..()
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
/obj/item/mech_melee_attack(obj/mecha/M)
|
||||||
|
return 0
|
||||||
|
|
||||||
/obj/item/proc/openTip(location, control, params, user)
|
/obj/item/proc/openTip(location, control, params, user)
|
||||||
openToolTip(user, src, params, title = name, content = "[desc]", theme = "")
|
openToolTip(user, src, params, title = name, content = "[desc]", theme = "")
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
push_over()
|
push_over()
|
||||||
|
|
||||||
/obj/item/cardboard_cutout/bullet_act(obj/item/projectile/P)
|
/obj/item/cardboard_cutout/bullet_act(obj/item/projectile/P)
|
||||||
visible_message("<span class='danger'>[src] has been hit by [P]!</span>")
|
visible_message("<span class='danger'>[src] is hit by [P]!</span>")
|
||||||
playsound(src, 'sound/weapons/slice.ogg', 50, 1)
|
playsound(src, 'sound/weapons/slice.ogg', 50, 1)
|
||||||
if(prob(P.damage))
|
if(prob(P.damage))
|
||||||
push_over()
|
push_over()
|
||||||
|
|||||||
@@ -112,6 +112,15 @@
|
|||||||
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
|
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
|
||||||
master.disrupt()
|
master.disrupt()
|
||||||
|
|
||||||
|
/obj/effect/dummy/chameleon/attack_animal()
|
||||||
|
master.disrupt()
|
||||||
|
|
||||||
|
/obj/effect/dummy/chameleon/attack_slime()
|
||||||
|
master.disrupt()
|
||||||
|
|
||||||
|
/obj/effect/dummy/chameleon/attack_alien()
|
||||||
|
master.disrupt()
|
||||||
|
|
||||||
/obj/effect/dummy/chameleon/ex_act(var/severity) //no longer bomb-proof
|
/obj/effect/dummy/chameleon/ex_act(var/severity) //no longer bomb-proof
|
||||||
for(var/mob/M in src)
|
for(var/mob/M in src)
|
||||||
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
|
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
|
||||||
|
|||||||
@@ -46,8 +46,10 @@
|
|||||||
if(prob(50))
|
if(prob(50))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/item/latexballon/bullet_act()
|
/obj/item/latexballon/bullet_act(obj/item/projectile/P)
|
||||||
burst()
|
if(!P.nodamage)
|
||||||
|
burst()
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/item/latexballon/temperature_expose(datum/gas_mixture/air, temperature, volume)
|
/obj/item/latexballon/temperature_expose(datum/gas_mixture/air, temperature, volume)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -38,10 +38,10 @@
|
|||||||
merge(O)
|
merge(O)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/stack/hitby(atom/movable/AM, skipcatch, hitpush)
|
/obj/item/stack/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
|
||||||
if(istype(AM, merge_type) && !(amount >= max_amount))
|
if(istype(AM, merge_type) && !(amount >= max_amount))
|
||||||
merge(AM)
|
merge(AM)
|
||||||
..()
|
. = ..()
|
||||||
|
|
||||||
/obj/item/stack/Destroy()
|
/obj/item/stack/Destroy()
|
||||||
if(usr && usr.machine == src)
|
if(usr && usr.machine == src)
|
||||||
@@ -129,7 +129,7 @@
|
|||||||
if(R.max_res_amount > 1 && max_multiplier > 1)
|
if(R.max_res_amount > 1 && max_multiplier > 1)
|
||||||
max_multiplier = min(max_multiplier, round(R.max_res_amount / R.res_amount))
|
max_multiplier = min(max_multiplier, round(R.max_res_amount / R.res_amount))
|
||||||
t1 += " |"
|
t1 += " |"
|
||||||
|
|
||||||
var/list/multipliers = list(5, 10, 25)
|
var/list/multipliers = list(5, 10, 25)
|
||||||
for(var/n in multipliers)
|
for(var/n in multipliers)
|
||||||
if(max_multiplier >= n)
|
if(max_multiplier >= n)
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
can_charge = 0
|
can_charge = 0
|
||||||
fire_delay = 50
|
fire_delay = 50
|
||||||
var/obj/item/chrono_eraser/TED = null
|
var/obj/item/chrono_eraser/TED = null
|
||||||
var/obj/effect/chrono_field/field = null
|
var/obj/structure/chrono_field/field = null
|
||||||
var/turf/startpos = null
|
var/turf/startpos = null
|
||||||
|
|
||||||
/obj/item/gun/energy/chrono_gun/New(var/obj/item/chrono_eraser/T)
|
/obj/item/gun/energy/chrono_gun/New(var/obj/item/chrono_eraser/T)
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
field_disconnect(field)
|
field_disconnect(field)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/item/gun/energy/chrono_gun/proc/field_connect(var/obj/effect/chrono_field/F)
|
/obj/item/gun/energy/chrono_gun/proc/field_connect(obj/structure/chrono_field/F)
|
||||||
var/mob/living/user = src.loc
|
var/mob/living/user = src.loc
|
||||||
if(F.gun)
|
if(F.gun)
|
||||||
if(isliving(user) && F.captured)
|
if(isliving(user) && F.captured)
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
to_chat(user, "<span class='notice'>Connection established with target: <b>[F.captured]</b></span>")
|
to_chat(user, "<span class='notice'>Connection established with target: <b>[F.captured]</b></span>")
|
||||||
|
|
||||||
|
|
||||||
/obj/item/gun/energy/chrono_gun/proc/field_disconnect(var/obj/effect/chrono_field/F)
|
/obj/item/gun/energy/chrono_gun/proc/field_disconnect(obj/structure/chrono_field/F)
|
||||||
if(F && field == F)
|
if(F && field == F)
|
||||||
var/mob/living/user = src.loc
|
var/mob/living/user = src.loc
|
||||||
if(F.gun == src)
|
if(F.gun == src)
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
field = null
|
field = null
|
||||||
startpos = null
|
startpos = null
|
||||||
|
|
||||||
/obj/item/gun/energy/chrono_gun/proc/field_check(var/obj/effect/chrono_field/F)
|
/obj/item/gun/energy/chrono_gun/proc/field_check(obj/structure/chrono_field/F)
|
||||||
if(F)
|
if(F)
|
||||||
if(field == F)
|
if(field == F)
|
||||||
var/turf/currentpos = get_turf(src)
|
var/turf/currentpos = get_turf(src)
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
|
|
||||||
/obj/item/projectile/energy/chrono_beam/on_hit(atom/target)
|
/obj/item/projectile/energy/chrono_beam/on_hit(atom/target)
|
||||||
if(target && gun && isliving(target))
|
if(target && gun && isliving(target))
|
||||||
var/obj/effect/chrono_field/F = new(target.loc, target, gun)
|
var/obj/structure/chrono_field/F = new(target.loc, target, gun)
|
||||||
gun.field_connect(F)
|
gun.field_connect(F)
|
||||||
|
|
||||||
/obj/item/ammo_casing/energy/chrono_beam
|
/obj/item/ammo_casing/energy/chrono_beam
|
||||||
@@ -144,27 +144,27 @@
|
|||||||
icon_state = "chronobolt"
|
icon_state = "chronobolt"
|
||||||
e_cost = 0
|
e_cost = 0
|
||||||
|
|
||||||
/obj/effect/chrono_field
|
/obj/structure/chrono_field
|
||||||
name = "eradication field"
|
name = "eradication field"
|
||||||
desc = "An aura of time-bluespace energy."
|
desc = "An aura of time-bluespace energy."
|
||||||
icon = 'icons/effects/effects.dmi'
|
icon = 'icons/effects/effects.dmi'
|
||||||
icon_state = "chronofield"
|
icon_state = "chronofield"
|
||||||
density = TRUE
|
density = FALSE
|
||||||
anchored = TRUE
|
anchored = TRUE
|
||||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
|
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
|
||||||
move_resist = INFINITY
|
move_resist = INFINITY
|
||||||
blend_mode = BLEND_MULTIPLY
|
blend_mode = BLEND_MULTIPLY
|
||||||
var/mob/living/captured = null
|
var/mob/living/captured = null
|
||||||
var/obj/item/gun/energy/chrono_gun/gun = null
|
var/obj/item/gun/energy/chrono_gun/gun = null
|
||||||
var/tickstokill = 30
|
var/tickstokill = 15
|
||||||
var/image/mob_underlay = null
|
var/mutable_appearance/mob_underlay
|
||||||
var/preloaded = 0
|
var/preloaded = 0
|
||||||
var/RPpos = null
|
var/RPpos = null
|
||||||
|
|
||||||
/obj/effect/chrono_field/New(loc, var/mob/living/target, var/obj/item/gun/energy/chrono_gun/G)
|
/obj/structure/chrono_field/New(loc, mob/living/target, obj/item/gun/energy/chrono_gun/G)
|
||||||
if(target && isliving(target) && G)
|
if(target && isliving(target) && G)
|
||||||
target.loc = src
|
target.forceMove(src)
|
||||||
src.captured = target
|
captured = target
|
||||||
var/icon/mob_snapshot = getFlatIcon(target)
|
var/icon/mob_snapshot = getFlatIcon(target)
|
||||||
var/icon/cached_icon = new()
|
var/icon/cached_icon = new()
|
||||||
|
|
||||||
@@ -174,18 +174,19 @@
|
|||||||
mob_icon.Blend(removing_frame, ICON_MULTIPLY)
|
mob_icon.Blend(removing_frame, ICON_MULTIPLY)
|
||||||
cached_icon.Insert(mob_icon, "frame[i]")
|
cached_icon.Insert(mob_icon, "frame[i]")
|
||||||
|
|
||||||
mob_underlay = new(cached_icon, "frame1")
|
mob_underlay = mutable_appearance(cached_icon, "frame1")
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
desc = initial(desc) + "<br><span class='info'>It appears to contain [target.name].</span>"
|
desc = initial(desc) + "<br><span class='info'>It appears to contain [target.name].</span>"
|
||||||
START_PROCESSING(SSobj, src)
|
START_PROCESSING(SSobj, src)
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/effect/chrono_field/Destroy()
|
/obj/structure/chrono_field/Destroy()
|
||||||
if(gun && gun.field_check(src))
|
if(gun && gun.field_check(src))
|
||||||
gun.field_disconnect(src)
|
gun.field_disconnect(src)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/effect/chrono_field/update_icon()
|
/obj/structure/chrono_field/update_icon()
|
||||||
var/ttk_frame = 1 - (tickstokill / initial(tickstokill))
|
var/ttk_frame = 1 - (tickstokill / initial(tickstokill))
|
||||||
ttk_frame = Clamp(Ceiling(ttk_frame * CHRONO_FRAME_COUNT), 1, CHRONO_FRAME_COUNT)
|
ttk_frame = Clamp(Ceiling(ttk_frame * CHRONO_FRAME_COUNT), 1, CHRONO_FRAME_COUNT)
|
||||||
if(ttk_frame != RPpos)
|
if(ttk_frame != RPpos)
|
||||||
@@ -194,11 +195,11 @@
|
|||||||
underlays = list() //hack: BYOND refuses to update the underlay to match the icon_state otherwise
|
underlays = list() //hack: BYOND refuses to update the underlay to match the icon_state otherwise
|
||||||
underlays += mob_underlay
|
underlays += mob_underlay
|
||||||
|
|
||||||
/obj/effect/chrono_field/process()
|
/obj/structure/chrono_field/process()
|
||||||
if(captured)
|
if(captured)
|
||||||
if(tickstokill > initial(tickstokill))
|
if(tickstokill > initial(tickstokill))
|
||||||
for(var/atom/movable/AM in contents)
|
for(var/atom/movable/AM in contents)
|
||||||
AM.loc = loc
|
AM.forceMove(drop_location())
|
||||||
qdel(src)
|
qdel(src)
|
||||||
else if(tickstokill <= 0)
|
else if(tickstokill <= 0)
|
||||||
to_chat(captured, "<span class='boldnotice'>As the last essence of your being is erased from time, you begin to re-experience your most enjoyable memory. You feel happy...</span>")
|
to_chat(captured, "<span class='boldnotice'>As the last essence of your being is erased from time, you begin to re-experience your most enjoyable memory. You feel happy...</span>")
|
||||||
@@ -212,12 +213,8 @@
|
|||||||
qdel(src)
|
qdel(src)
|
||||||
else
|
else
|
||||||
captured.Paralyse(4)
|
captured.Paralyse(4)
|
||||||
if(captured.reagents)
|
if(captured.loc != src)
|
||||||
captured.reagents.del_reagent("synaptizine") //you pesky thing you
|
captured.forceMove(src)
|
||||||
if(captured.loc != src) //If they manage to escape, immediately kill them, this is so that even if there IS a way to get out, they won't use it
|
|
||||||
captured.loc = src
|
|
||||||
tickstokill = 0
|
|
||||||
return .()
|
|
||||||
update_icon()
|
update_icon()
|
||||||
if(gun)
|
if(gun)
|
||||||
if(gun.field_check(src))
|
if(gun.field_check(src))
|
||||||
@@ -230,7 +227,8 @@
|
|||||||
else
|
else
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/effect/chrono_field/bullet_act(var/obj/item/projectile/P)
|
|
||||||
|
/obj/structure/chrono_field/bullet_act(obj/item/projectile/P)
|
||||||
if(istype(P, /obj/item/projectile/energy/chrono_beam))
|
if(istype(P, /obj/item/projectile/energy/chrono_beam))
|
||||||
var/obj/item/projectile/energy/chrono_beam/beam = P
|
var/obj/item/projectile/energy/chrono_beam/beam = P
|
||||||
var/obj/item/gun/energy/chrono_gun/Pgun = beam.gun
|
var/obj/item/gun/energy/chrono_gun/Pgun = beam.gun
|
||||||
@@ -239,28 +237,28 @@
|
|||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
/obj/effect/chrono_field/assume_air()
|
/obj/structure/chrono_field/assume_air()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
/obj/effect/chrono_field/return_air() //we always have nominal air and temperature
|
/obj/structure/chrono_field/return_air() //we always have nominal air and temperature
|
||||||
var/datum/gas_mixture/GM = new
|
var/datum/gas_mixture/GM = new
|
||||||
GM.oxygen = MOLES_O2STANDARD
|
GM.oxygen = MOLES_O2STANDARD
|
||||||
GM.nitrogen = MOLES_N2STANDARD
|
GM.nitrogen = MOLES_N2STANDARD
|
||||||
GM.temperature = T20C
|
GM.temperature = T20C
|
||||||
return GM
|
return GM
|
||||||
|
|
||||||
/obj/effect/chrono_field/Move()
|
/obj/structure/chrono_field/Move()
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/chrono_field/singularity_act()
|
/obj/structure/chrono_field/singularity_act()
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/chrono_field/ex_act()
|
/obj/structure/chrono_field/ex_act()
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/chrono_field/blob_act()
|
/obj/structure/chrono_field/blob_act(obj/structure/blob/B)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
#undef CHRONO_BEAM_RANGE
|
#undef CHRONO_BEAM_RANGE
|
||||||
#undef CHRONO_FRAME_COUNT
|
#undef CHRONO_FRAME_COUNT
|
||||||
@@ -15,6 +15,12 @@
|
|||||||
var/det_time = 50
|
var/det_time = 50
|
||||||
var/display_timer = 1
|
var/display_timer = 1
|
||||||
|
|
||||||
|
/obj/item/grenade/deconstruct(disassembled = TRUE)
|
||||||
|
if(!disassembled)
|
||||||
|
prime()
|
||||||
|
if(!QDELETED(src))
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
/obj/item/grenade/proc/clown_check(var/mob/living/user)
|
/obj/item/grenade/proc/clown_check(var/mob/living/user)
|
||||||
if((CLUMSY in user.mutations) && prob(50))
|
if((CLUMSY in user.mutations) && prob(50))
|
||||||
to_chat(user, "<span class='warning'>Huh? How does this thing work?</span>")
|
to_chat(user, "<span class='warning'>Huh? How does this thing work?</span>")
|
||||||
|
|||||||
@@ -87,7 +87,6 @@
|
|||||||
/obj/item/storage/backpack/holding/singularity_act(current_size)
|
/obj/item/storage/backpack/holding/singularity_act(current_size)
|
||||||
var/dist = max((current_size - 2),1)
|
var/dist = max((current_size - 2),1)
|
||||||
explosion(src.loc,(dist),(dist*2),(dist*4))
|
explosion(src.loc,(dist),(dist*2),(dist*4))
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/storage/backpack/santabag
|
/obj/item/storage/backpack/santabag
|
||||||
name = "Santa's Gift Bag"
|
name = "Santa's Gift Bag"
|
||||||
|
|||||||
@@ -109,10 +109,10 @@
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/tank/blob_act()
|
/obj/item/tank/blob_act(obj/structure/blob/B)
|
||||||
if(prob(50))
|
if(B && B.loc == loc)
|
||||||
var/turf/location = loc
|
var/turf/location = get_turf(src)
|
||||||
if(!( istype(location, /turf) ))
|
if(!location)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
if(air_contents)
|
if(air_contents)
|
||||||
@@ -120,6 +120,15 @@
|
|||||||
|
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/item/tank/deconstruct(disassembled = TRUE)
|
||||||
|
if(!disassembled)
|
||||||
|
var/turf/T = get_turf(src)
|
||||||
|
if(T)
|
||||||
|
T.assume_air(air_contents)
|
||||||
|
air_update_turf()
|
||||||
|
playsound(src.loc, 'sound/effects/spray.ogg', 10, TRUE, -3)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
/obj/item/tank/attackby(obj/item/W as obj, mob/user as mob, params)
|
/obj/item/tank/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,7 @@
|
|||||||
else
|
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)
|
if(. && !play_soundeffect)
|
||||||
playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
|
playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/force_pushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction)
|
/obj/force_pushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction)
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|||||||
@@ -273,11 +273,9 @@ a {
|
|||||||
onclose(user, "mtcomputer")
|
onclose(user, "mtcomputer")
|
||||||
|
|
||||||
/obj/singularity_pull(S, current_size)
|
/obj/singularity_pull(S, current_size)
|
||||||
if(anchored)
|
..()
|
||||||
if(current_size >= STAGE_FIVE)
|
if(!anchored || current_size >= STAGE_FIVE)
|
||||||
anchored = 0
|
step_towards(src,S)
|
||||||
step_towards(src,S)
|
|
||||||
else step_towards(src,S)
|
|
||||||
|
|
||||||
/obj/proc/container_resist(var/mob/living)
|
/obj/proc/container_resist(var/mob/living)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -5,10 +5,6 @@
|
|||||||
var/mob/climber
|
var/mob/climber
|
||||||
var/broken = FALSE
|
var/broken = FALSE
|
||||||
|
|
||||||
/obj/structure/blob_act()
|
|
||||||
if(prob(50))
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/structure/ex_act(severity)
|
/obj/structure/ex_act(severity)
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1.0)
|
if(1.0)
|
||||||
@@ -21,13 +17,6 @@
|
|||||||
if(3.0)
|
if(3.0)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/mech_melee_attack(obj/mecha/M)
|
|
||||||
if(M.damtype == "brute")
|
|
||||||
M.occupant_message("<span class='danger'>You hit [src].</span>")
|
|
||||||
visible_message("<span class='danger'>[src] has been hit by [M.name].</span>")
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/obj/structure/New()
|
/obj/structure/New()
|
||||||
if (!armor)
|
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)
|
||||||
|
|||||||
@@ -28,12 +28,12 @@
|
|||||||
switch(damage_type)
|
switch(damage_type)
|
||||||
if(BRUTE)
|
if(BRUTE)
|
||||||
if(damage_amount)
|
if(damage_amount)
|
||||||
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
|
playsound(loc, 'sound/effects/attackblob.ogg', 100, TRUE)
|
||||||
else
|
else
|
||||||
playsound(src, 'sound/weapons/tap.ogg', 50, 1)
|
playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
|
||||||
if(BURN)
|
if(BURN)
|
||||||
if(damage_amount)
|
if(damage_amount)
|
||||||
playsound(loc, 'sound/items/welder.ogg', 100, 1)
|
playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Resin
|
* Resin
|
||||||
|
|||||||
@@ -38,7 +38,17 @@
|
|||||||
else
|
else
|
||||||
desc = "It displays \"[name]\"."
|
desc = "It displays \"[name]\"."
|
||||||
|
|
||||||
|
/obj/structure/sign/barsign/deconstruct(disassembled = TRUE)
|
||||||
|
new /obj/item/stack/sheet/metal(drop_location(), 2)
|
||||||
|
new /obj/item/stack/cable_coil(drop_location(), 2)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/structure/sign/barsign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
|
switch(damage_type)
|
||||||
|
if(BRUTE)
|
||||||
|
playsound(src.loc, 'sound/effects/glasshit.ogg', 75, TRUE)
|
||||||
|
if(BURN)
|
||||||
|
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/structure/sign/barsign/attack_ai(mob/user as mob)
|
/obj/structure/sign/barsign/attack_ai(mob/user as mob)
|
||||||
return src.attack_hand(user)
|
return src.attack_hand(user)
|
||||||
|
|||||||
@@ -146,27 +146,6 @@
|
|||||||
new /obj/item/stack/sheet/metal(loc)
|
new /obj/item/stack/sheet/metal(loc)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/closet/bullet_act(var/obj/item/projectile/Proj)
|
|
||||||
..()
|
|
||||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
|
||||||
health -= Proj.damage
|
|
||||||
if(health <= 0)
|
|
||||||
dump_contents()
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/structure/closet/attack_animal(mob/living/simple_animal/user)
|
|
||||||
if(user.environment_smash)
|
|
||||||
user.do_attack_animation(src)
|
|
||||||
visible_message("<span class='warning'>[user] destroys the [src].</span>")
|
|
||||||
dump_contents()
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
// this should probably use dump_contents()
|
|
||||||
/obj/structure/closet/blob_act()
|
|
||||||
if(prob(75))
|
|
||||||
dump_contents()
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/structure/closet/attackby(obj/item/W, mob/user, params)
|
/obj/structure/closet/attackby(obj/item/W, mob/user, params)
|
||||||
if(istype(W, /obj/item/rcs) && !opened)
|
if(istype(W, /obj/item/rcs) && !opened)
|
||||||
if(user in contents) //to prevent self-teleporting.
|
if(user in contents) //to prevent self-teleporting.
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
if(isanimal(M) && "syndicate" in M.faction)
|
if(isanimal(M) && "syndicate" in M.faction)
|
||||||
to_chat(M, "<span class='warning'>The [src] resists your attack!</span>")
|
to_chat(M, "<span class='warning'>The [src] resists your attack!</span>")
|
||||||
return
|
return
|
||||||
return ..(M)
|
return ..()
|
||||||
|
|
||||||
/obj/structure/closet/secure_closet/syndicate/depot/attackby(obj/item/W, mob/user, params)
|
/obj/structure/closet/secure_closet/syndicate/depot/attackby(obj/item/W, mob/user, params)
|
||||||
if(istype(W, /obj/item/rcs))
|
if(istype(W, /obj/item/rcs))
|
||||||
|
|||||||
@@ -92,19 +92,6 @@
|
|||||||
for(var/mob/M in src)
|
for(var/mob/M in src)
|
||||||
shatter(M)
|
shatter(M)
|
||||||
|
|
||||||
/obj/structure/closet/statue/bullet_act(var/obj/item/projectile/Proj)
|
|
||||||
health -= Proj.damage
|
|
||||||
check_health()
|
|
||||||
|
|
||||||
/obj/structure/closet/statue/attack_animal(mob/living/simple_animal/user as mob)
|
|
||||||
if(user.environment_smash)
|
|
||||||
for(var/mob/M in src)
|
|
||||||
shatter(M)
|
|
||||||
|
|
||||||
/obj/structure/closet/statue/blob_act()
|
|
||||||
for(var/mob/M in src)
|
|
||||||
shatter(M)
|
|
||||||
|
|
||||||
/obj/structure/closet/statue/ex_act(severity)
|
/obj/structure/closet/statue/ex_act(severity)
|
||||||
for(var/mob/M in src)
|
for(var/mob/M in src)
|
||||||
M.ex_act(severity)
|
M.ex_act(severity)
|
||||||
|
|||||||
@@ -194,9 +194,10 @@
|
|||||||
if(3.0)
|
if(3.0)
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
|
||||||
else
|
/obj/structure/closet/singularity_act()
|
||||||
return
|
dump_contents()
|
||||||
|
..()
|
||||||
|
|
||||||
/obj/structure/closet/crate/attack_hand(mob/user)
|
/obj/structure/closet/crate/attack_hand(mob/user)
|
||||||
if(manifest)
|
if(manifest)
|
||||||
|
|||||||
@@ -14,18 +14,21 @@
|
|||||||
layer = SHOWER_OPEN_LAYER
|
layer = SHOWER_OPEN_LAYER
|
||||||
opacity = 0
|
opacity = 0
|
||||||
|
|
||||||
/obj/structure/curtain/bullet_act(obj/item/projectile/P, def_zone)
|
|
||||||
if(!P.nodamage)
|
|
||||||
visible_message("<span class='warning'>[P] tears [src] down!</span>")
|
|
||||||
qdel(src)
|
|
||||||
else
|
|
||||||
..(P, def_zone)
|
|
||||||
|
|
||||||
/obj/structure/curtain/attack_hand(mob/user)
|
/obj/structure/curtain/attack_hand(mob/user)
|
||||||
playsound(get_turf(loc), "rustle", 15, 1, -5)
|
playsound(get_turf(loc), "rustle", 15, 1, -5)
|
||||||
toggle()
|
toggle()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
/obj/structure/curtain/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
|
switch(damage_type)
|
||||||
|
if(BRUTE)
|
||||||
|
if(damage_amount)
|
||||||
|
playsound(src.loc, 'sound/weapons/slash.ogg', 80, TRUE)
|
||||||
|
else
|
||||||
|
playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE)
|
||||||
|
if(BURN)
|
||||||
|
playsound(loc, 'sound/items/welder.ogg', 80, TRUE)
|
||||||
|
|
||||||
/obj/structure/curtain/proc/toggle()
|
/obj/structure/curtain/proc/toggle()
|
||||||
set_opacity(!opacity)
|
set_opacity(!opacity)
|
||||||
if(opacity)
|
if(opacity)
|
||||||
|
|||||||
@@ -33,11 +33,6 @@
|
|||||||
obj_integrity = 0
|
obj_integrity = 0
|
||||||
healthcheck()
|
healthcheck()
|
||||||
|
|
||||||
/obj/structure/fusionreactor/bullet_act(obj/item/projectile/Proj)
|
|
||||||
obj_integrity -= Proj.damage
|
|
||||||
..()
|
|
||||||
healthcheck()
|
|
||||||
|
|
||||||
/obj/structure/fusionreactor/proc/healthcheck()
|
/obj/structure/fusionreactor/proc/healthcheck()
|
||||||
if(obj_integrity <= 0 && istype(depotarea))
|
if(obj_integrity <= 0 && istype(depotarea))
|
||||||
overload(TRUE)
|
overload(TRUE)
|
||||||
|
|||||||
@@ -163,6 +163,21 @@ GLOBAL_LIST_INIT(captain_display_cases, list())
|
|||||||
occupant = null
|
occupant = null
|
||||||
occupant_overlay = null
|
occupant_overlay = null
|
||||||
|
|
||||||
|
/obj/structure/displaycase/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
|
switch(damage_type)
|
||||||
|
if(BRUTE)
|
||||||
|
playsound(src.loc, 'sound/effects/glasshit.ogg', 75, TRUE)
|
||||||
|
if(BURN)
|
||||||
|
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
|
/obj/structure/displaycase/deconstruct(disassembled = TRUE)
|
||||||
|
if(!(flags & NODECONSTRUCT))
|
||||||
|
dump()
|
||||||
|
if(!disassembled)
|
||||||
|
new /obj/item/shard( src.loc )
|
||||||
|
burglar_alarm()
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/displaycase/ex_act(severity)
|
/obj/structure/displaycase/ex_act(severity)
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1)
|
if(1)
|
||||||
@@ -179,19 +194,6 @@ GLOBAL_LIST_INIT(captain_display_cases, list())
|
|||||||
src.health -= 5
|
src.health -= 5
|
||||||
src.healthcheck()
|
src.healthcheck()
|
||||||
|
|
||||||
/obj/structure/displaycase/bullet_act(var/obj/item/projectile/Proj)
|
|
||||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
|
||||||
health -= Proj.damage
|
|
||||||
..()
|
|
||||||
src.healthcheck()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/structure/displaycase/blob_act()
|
|
||||||
if(prob(75))
|
|
||||||
new /obj/item/shard(loc)
|
|
||||||
if(occupant) dump()
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/structure/displaycase/proc/healthcheck()
|
/obj/structure/displaycase/proc/healthcheck()
|
||||||
if(src.health <= 0)
|
if(src.health <= 0)
|
||||||
health = 0
|
health = 0
|
||||||
|
|||||||
@@ -281,7 +281,7 @@
|
|||||||
qdel(source)
|
qdel(source)
|
||||||
|
|
||||||
/obj/structure/door_assembly/deconstruct(disassembled = TRUE)
|
/obj/structure/door_assembly/deconstruct(disassembled = TRUE)
|
||||||
if(can_deconstruct)
|
if(!(flags & NODECONSTRUCT))
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(!disassembled)
|
if(!disassembled)
|
||||||
material_amt = rand(2,4)
|
material_amt = rand(2,4)
|
||||||
|
|||||||
@@ -80,11 +80,15 @@
|
|||||||
user.visible_message("[user] has secured [src]'s bolts.", \
|
user.visible_message("[user] has secured [src]'s bolts.", \
|
||||||
"<span class='notice'>You have secured [src]'s bolts.</span>")
|
"<span class='notice'>You have secured [src]'s bolts.</span>")
|
||||||
anchored = 1
|
anchored = 1
|
||||||
else
|
return
|
||||||
if(iscrowbar(W) && !anchored)
|
if(iscrowbar(W) && !anchored)
|
||||||
playsound(loc, W.usesound, 100, 1)
|
playsound(loc, W.usesound, 100, 1)
|
||||||
user.visible_message("[user] is attempting to dismantle [src].", \
|
user.visible_message("[user] is attempting to dismantle [src].", "<span class='notice'>You begin to dismantle [src]...</span>")
|
||||||
"<span class='notice'>You begin to dismantle [src]...</span>")
|
if(do_after(user, 40 * W.toolspeed, target = src))
|
||||||
if(do_after(user, 40 * W.toolspeed, target = src))
|
deconstruct()
|
||||||
new /obj/item/stack/sheet/wood (loc, 30)
|
return
|
||||||
qdel(src)
|
return ..()
|
||||||
|
|
||||||
|
/obj/structure/dresser/deconstruct(disassembled = TRUE)
|
||||||
|
new /obj/item/stack/sheet/wood(drop_location(), 30)
|
||||||
|
qdel(src)
|
||||||
@@ -140,6 +140,15 @@
|
|||||||
playsound(src, 'sound/items/welder.ogg', 100, 1)
|
playsound(src, 'sound/items/welder.ogg', 100, 1)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/structure/falsewall/deconstruct(disassembled = TRUE)
|
||||||
|
if(!(flags & NODECONSTRUCT))
|
||||||
|
if(disassembled)
|
||||||
|
new girder_type(loc)
|
||||||
|
if(mineral_amount)
|
||||||
|
for(var/i in 1 to mineral_amount)
|
||||||
|
new mineral(loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* False R-Walls
|
* False R-Walls
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -29,18 +29,6 @@
|
|||||||
for(var/i=0;i < metalAmount;i++)
|
for(var/i=0;i < metalAmount;i++)
|
||||||
new /obj/item/stack/sheet/metal(get_turf(src))
|
new /obj/item/stack/sheet/metal(get_turf(src))
|
||||||
|
|
||||||
/obj/structure/girder/attack_animal(mob/living/simple_animal/M)
|
|
||||||
M.changeNext_move(CLICK_CD_MELEE)
|
|
||||||
M.do_attack_animation(src)
|
|
||||||
if((M.environment_smash & ENVIRONMENT_SMASH_STRUCTURES) || (M.environment_smash & ENVIRONMENT_SMASH_WALLS) || (M.environment_smash & ENVIRONMENT_SMASH_RWALLS))
|
|
||||||
if(M.environment_smash & ENVIRONMENT_SMASH_RWALLS)
|
|
||||||
ex_act(2)
|
|
||||||
M.visible_message("<span class='warning'>[M] smashes through \the [src].</span>", "<span class='warning'>You smash through \the [src].</span>")
|
|
||||||
else
|
|
||||||
M.visible_message("<span class='warning'>[M] smashes against \the [src].</span>", "<span class='warning'>You smash against \the [src].</span>")
|
|
||||||
take_damage(rand(25, 75))
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/structure/girder/temperature_expose(datum/gas_mixture/air, exposed_temperature)
|
/obj/structure/girder/temperature_expose(datum/gas_mixture/air, exposed_temperature)
|
||||||
..()
|
..()
|
||||||
var/temp_check = exposed_temperature
|
var/temp_check = exposed_temperature
|
||||||
@@ -372,28 +360,16 @@
|
|||||||
. = . || mover.checkpass(PASSGRILLE)
|
. = . || mover.checkpass(PASSGRILLE)
|
||||||
|
|
||||||
/obj/structure/girder/deconstruct(disassembled = TRUE)
|
/obj/structure/girder/deconstruct(disassembled = TRUE)
|
||||||
if(can_deconstruct)
|
if(!(flags & NODECONSTRUCT))
|
||||||
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
|
var/remains = pick(/obj/item/stack/rods, /obj/item/stack/sheet/metal)
|
||||||
new remains(loc)
|
new remains(loc)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/girder/blob_act()
|
|
||||||
if(prob(40))
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/structure/girder/narsie_act()
|
/obj/structure/girder/narsie_act()
|
||||||
if(prob(25))
|
if(prob(25))
|
||||||
new /obj/structure/girder/cult(loc)
|
new /obj/structure/girder/cult(loc)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/girder/bullet_act(obj/item/projectile/Proj)
|
|
||||||
if(istype(Proj ,/obj/item/projectile/beam/pulse))
|
|
||||||
ex_act(2)
|
|
||||||
else
|
|
||||||
take_damage(Proj.damage)
|
|
||||||
..()
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/obj/structure/girder/ex_act(severity)
|
/obj/structure/girder/ex_act(severity)
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1)
|
if(1)
|
||||||
@@ -500,6 +476,6 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/girder/cult/deconstruct(disassembled = TRUE)
|
/obj/structure/girder/cult/deconstruct(disassembled = TRUE)
|
||||||
if(can_deconstruct)
|
if(!(flags & NODECONSTRUCT))
|
||||||
new/obj/item/stack/sheet/runed_metal/(get_turf(src), 1)
|
new /obj/item/stack/sheet/runed_metal(drop_location(), 1)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|||||||
@@ -53,10 +53,6 @@
|
|||||||
. = ..()
|
. = ..()
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/structure/grille/blob_act()
|
|
||||||
if(!broken)
|
|
||||||
obj_break()
|
|
||||||
|
|
||||||
/obj/structure/grille/examine(mob/user)
|
/obj/structure/grille/examine(mob/user)
|
||||||
..()
|
..()
|
||||||
if(anchored)
|
if(anchored)
|
||||||
@@ -78,6 +74,11 @@
|
|||||||
shock(user, 70)
|
shock(user, 70)
|
||||||
shockcooldown = world.time + my_shockcooldown
|
shockcooldown = world.time + my_shockcooldown
|
||||||
|
|
||||||
|
/obj/structure/grille/attack_animal(mob/user)
|
||||||
|
. = ..()
|
||||||
|
if(!shock(user, 70))
|
||||||
|
take_damage(rand(5,10), BRUTE, "melee", 1)
|
||||||
|
|
||||||
/obj/structure/grille/hulk_damage()
|
/obj/structure/grille/hulk_damage()
|
||||||
return 60
|
return 60
|
||||||
|
|
||||||
@@ -98,14 +99,9 @@
|
|||||||
take_damage(rand(5,10), BRUTE, "melee", 1)
|
take_damage(rand(5,10), BRUTE, "melee", 1)
|
||||||
|
|
||||||
/obj/structure/grille/attack_alien(mob/living/user)
|
/obj/structure/grille/attack_alien(mob/living/user)
|
||||||
if(istype(user, /mob/living/carbon/alien/larva))
|
|
||||||
return
|
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
|
||||||
user.do_attack_animation(src)
|
user.do_attack_animation(src)
|
||||||
user.visible_message("<span class='warning'>[user] mangles [src].</span>", \
|
user.changeNext_move(CLICK_CD_MELEE)
|
||||||
"<span class='warning'>You mangle [src].</span>", \
|
user.visible_message("<span class='warning'>[user] mangles [src].</span>")
|
||||||
"You hear twisting metal.")
|
|
||||||
|
|
||||||
if(!shock(user, 70))
|
if(!shock(user, 70))
|
||||||
take_damage(20, BRUTE, "melee", 1)
|
take_damage(20, BRUTE, "melee", 1)
|
||||||
|
|
||||||
@@ -222,17 +218,17 @@
|
|||||||
switch(damage_type)
|
switch(damage_type)
|
||||||
if(BRUTE)
|
if(BRUTE)
|
||||||
if(damage_amount)
|
if(damage_amount)
|
||||||
playsound(src, 'sound/effects/grillehit.ogg', 80, 1)
|
playsound(src, 'sound/effects/grillehit.ogg', 80, TRUE)
|
||||||
else
|
else
|
||||||
playsound(src, 'sound/weapons/tap.ogg', 50, 1)
|
playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
|
||||||
if(BURN)
|
if(BURN)
|
||||||
playsound(src, 'sound/items/welder.ogg', 80, 1)
|
playsound(src, 'sound/items/welder.ogg', 80, TRUE)
|
||||||
|
|
||||||
/obj/structure/grille/deconstruct(disassembled = TRUE)
|
/obj/structure/grille/deconstruct(disassembled = TRUE)
|
||||||
if(!loc) //if already qdel'd somehow, we do nothing
|
if(!loc) //if already qdel'd somehow, we do nothing
|
||||||
return
|
return
|
||||||
if(can_deconstruct)
|
if(!(flags & NODECONSTRUCT))
|
||||||
var/obj/R = new rods_type(loc, rods_amount)
|
var/obj/R = new rods_type(drop_location(), rods_amount)
|
||||||
transfer_fingerprints_to(R)
|
transfer_fingerprints_to(R)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
..()
|
..()
|
||||||
@@ -270,15 +266,17 @@
|
|||||||
if(exposed_temperature > T0C + 1500)
|
if(exposed_temperature > T0C + 1500)
|
||||||
take_damage(1, BURN, 0, 0)
|
take_damage(1, BURN, 0, 0)
|
||||||
|
|
||||||
/obj/structure/grille/hitby(atom/movable/AM)
|
/obj/structure/grille/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
|
||||||
if(istype(AM, /obj))
|
if(isobj(AM))
|
||||||
if(prob(50) && anchored && !broken)
|
if(prob(50) && anchored && !broken)
|
||||||
var/turf/T = get_turf(src)
|
var/obj/O = AM
|
||||||
var/obj/structure/cable/C = T.get_cable_node()
|
if(O.throwforce != 0)//don't want to let people spam tesla bolts, this way it will break after time
|
||||||
if(C)
|
var/turf/T = get_turf(src)
|
||||||
playsound(loc, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5)
|
var/obj/structure/cable/C = T.get_cable_node()
|
||||||
tesla_zap(src, 3, C.newavail() * 0.01) //Zap for 1/100 of the amount of power. At a million watts in the grid, it will be as powerful as a tesla revolver shot.
|
if(C)
|
||||||
C.add_delayedload(C.newavail() * 0.0375) // you can gain up to 3.5 via the 4x upgrades power is halved by the pole so thats 2x then 1X then .5X for 3.5x the 3 bounces shock.
|
playsound(src, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
|
||||||
|
tesla_zap(src, 3, C.newavail() * 0.01) //Zap for 1/100 of the amount of power. At a million watts in the grid, it will be as powerful as a tesla revolver shot.
|
||||||
|
C.add_delayedload(C.newavail() * 0.0375) // you can gain up to 3.5 via the 4x upgrades power is halved by the pole so thats 2x then 1X then .5X for 3.5x the 3 bounces shock.
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/structure/grille/broken // Pre-broken grilles for map placement
|
/obj/structure/grille/broken // Pre-broken grilles for map placement
|
||||||
|
|||||||
@@ -32,9 +32,9 @@
|
|||||||
/obj/structure/holosign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
/obj/structure/holosign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
switch(damage_type)
|
switch(damage_type)
|
||||||
if(BRUTE)
|
if(BRUTE)
|
||||||
playsound(loc, 'sound/weapons/egloves.ogg', 80, 1)
|
playsound(loc, 'sound/weapons/egloves.ogg', 80, TRUE)
|
||||||
if(BURN)
|
if(BURN)
|
||||||
playsound(loc, 'sound/weapons/egloves.ogg', 80, 1)
|
playsound(loc, 'sound/weapons/egloves.ogg', 80, TRUE)
|
||||||
|
|
||||||
/obj/structure/holosign/wetsign
|
/obj/structure/holosign/wetsign
|
||||||
name = "wet floor sign"
|
name = "wet floor sign"
|
||||||
|
|||||||
@@ -41,13 +41,6 @@
|
|||||||
/obj/structure/inflatable/CanAtmosPass(turf/T)
|
/obj/structure/inflatable/CanAtmosPass(turf/T)
|
||||||
return !density
|
return !density
|
||||||
|
|
||||||
/obj/structure/inflatable/bullet_act(var/obj/item/projectile/Proj)
|
|
||||||
health -= Proj.damage
|
|
||||||
..()
|
|
||||||
if(health <= 0)
|
|
||||||
deflate(1)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/structure/inflatable/ex_act(severity)
|
/obj/structure/inflatable/ex_act(severity)
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1.0)
|
if(1.0)
|
||||||
@@ -61,9 +54,6 @@
|
|||||||
deflate(1)
|
deflate(1)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/inflatable/blob_act()
|
|
||||||
deflate(1)
|
|
||||||
|
|
||||||
/obj/structure/inflatable/attack_hand(mob/user as mob)
|
/obj/structure/inflatable/attack_hand(mob/user as mob)
|
||||||
add_fingerprint(user)
|
add_fingerprint(user)
|
||||||
return
|
return
|
||||||
@@ -76,25 +66,6 @@
|
|||||||
else //for nicer text~
|
else //for nicer text~
|
||||||
user.visible_message("<span class='danger'>[user] tears at [src]!</span>")
|
user.visible_message("<span class='danger'>[user] tears at [src]!</span>")
|
||||||
|
|
||||||
/obj/structure/inflatable/attack_alien(mob/user as mob)
|
|
||||||
if(islarva(user))
|
|
||||||
return
|
|
||||||
attack_generic(user, 15)
|
|
||||||
|
|
||||||
/obj/structure/inflatable/attack_animal(mob/user as mob)
|
|
||||||
if(!isanimal(user))
|
|
||||||
return
|
|
||||||
var/mob/living/simple_animal/M = user
|
|
||||||
if(M.melee_damage_upper <= 0)
|
|
||||||
return
|
|
||||||
attack_generic(M, M.melee_damage_upper)
|
|
||||||
|
|
||||||
/obj/structure/inflatable/attack_slime(mob/user as mob)
|
|
||||||
var/mob/living/carbon/slime/S = user
|
|
||||||
if(!S.is_adult)
|
|
||||||
return
|
|
||||||
attack_generic(user, rand(10, 15))
|
|
||||||
|
|
||||||
/obj/structure/inflatable/attackby(obj/item/W as obj, mob/user as mob, params)
|
/obj/structure/inflatable/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||||
if(!istype(W))
|
if(!istype(W))
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -136,3 +136,11 @@
|
|||||||
M.emote("scream")
|
M.emote("scream")
|
||||||
M.AdjustWeakened(10)
|
M.AdjustWeakened(10)
|
||||||
|
|
||||||
|
/obj/structure/kitchenspike/deconstruct(disassembled = TRUE)
|
||||||
|
if(disassembled)
|
||||||
|
var/obj/F = new /obj/structure/kitchenspike_frame(loc)
|
||||||
|
transfer_fingerprints_to(F)
|
||||||
|
else
|
||||||
|
new /obj/item/stack/sheet/metal(src.loc, 4)
|
||||||
|
new /obj/item/stack/rods(loc, 4)
|
||||||
|
qdel(src)
|
||||||
@@ -25,20 +25,6 @@
|
|||||||
src.health -= 5
|
src.health -= 5
|
||||||
src.healthcheck()
|
src.healthcheck()
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/lamarr/bullet_act(var/obj/item/projectile/Proj)
|
|
||||||
health -= Proj.damage
|
|
||||||
..()
|
|
||||||
src.healthcheck()
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/lamarr/blob_act()
|
|
||||||
if(prob(75))
|
|
||||||
new /obj/item/shard(loc)
|
|
||||||
Break()
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/structure/lamarr/proc/healthcheck()
|
/obj/structure/lamarr/proc/healthcheck()
|
||||||
if(src.health <= 0)
|
if(src.health <= 0)
|
||||||
if(!( src.destroyed ))
|
if(!( src.destroyed ))
|
||||||
|
|||||||
@@ -41,11 +41,13 @@
|
|||||||
return T.attackby(C, user) //hand this off to the turf instead (for building plating, catwalks, etc)
|
return T.attackby(C, user) //hand this off to the turf instead (for building plating, catwalks, etc)
|
||||||
|
|
||||||
/obj/structure/lattice/deconstruct(disassembled = TRUE)
|
/obj/structure/lattice/deconstruct(disassembled = TRUE)
|
||||||
new /obj/item/stack/rods(get_turf(src), number_of_rods)
|
if(!(flags & NODECONSTRUCT))
|
||||||
|
new /obj/item/stack/rods(get_turf(src), number_of_rods)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/lattice/blob_act()
|
|
||||||
qdel(src)
|
/obj/structure/lattice/blob_act(obj/structure/blob/B)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/structure/lattice/ex_act(severity)
|
/obj/structure/lattice/ex_act(severity)
|
||||||
switch(severity)
|
switch(severity)
|
||||||
@@ -58,7 +60,7 @@
|
|||||||
|
|
||||||
/obj/structure/lattice/singularity_pull(S, current_size)
|
/obj/structure/lattice/singularity_pull(S, current_size)
|
||||||
if(current_size >= STAGE_FOUR)
|
if(current_size >= STAGE_FOUR)
|
||||||
qdel(src)
|
deconstruct()
|
||||||
|
|
||||||
/obj/structure/lattice/clockwork
|
/obj/structure/lattice/clockwork
|
||||||
name = "cog lattice"
|
name = "cog lattice"
|
||||||
|
|||||||
@@ -52,9 +52,6 @@
|
|||||||
/obj/structure/mineral_door/attack_hand(mob/user)
|
/obj/structure/mineral_door/attack_hand(mob/user)
|
||||||
return TryToSwitchState(user)
|
return TryToSwitchState(user)
|
||||||
|
|
||||||
/obj/structure/mineral_door/attack_animal(mob/user)
|
|
||||||
return TryToSwitchState(user)
|
|
||||||
|
|
||||||
/obj/structure/mineral_door/attack_ghost(mob/user)
|
/obj/structure/mineral_door/attack_ghost(mob/user)
|
||||||
if(user.can_advanced_admin_interact())
|
if(user.can_advanced_admin_interact())
|
||||||
SwitchState()
|
SwitchState()
|
||||||
|
|||||||
@@ -42,16 +42,6 @@
|
|||||||
playsound(src, "shatter", 70, 1)
|
playsound(src, "shatter", 70, 1)
|
||||||
desc = "Oh no, seven years of bad luck!"
|
desc = "Oh no, seven years of bad luck!"
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/mirror/bullet_act(obj/item/projectile/Proj)
|
|
||||||
if(prob(Proj.damage * 2))
|
|
||||||
if(!broken)
|
|
||||||
shatter()
|
|
||||||
else
|
|
||||||
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
|
|
||||||
..()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/mirror/attackby(obj/item/I, mob/living/user, params)
|
/obj/structure/mirror/attackby(obj/item/I, mob/living/user, params)
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
user.changeNext_move(CLICK_CD_MELEE)
|
||||||
if(isscrewdriver(I))
|
if(isscrewdriver(I))
|
||||||
@@ -78,46 +68,18 @@
|
|||||||
visible_message("<span class='warning'>[user] hits [src] with [I]!</span>")
|
visible_message("<span class='warning'>[user] hits [src] with [I]!</span>")
|
||||||
playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1)
|
playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1)
|
||||||
|
|
||||||
|
/obj/structure/mirror/deconstruct(disassembled = TRUE)
|
||||||
|
if(!(flags & NODECONSTRUCT))
|
||||||
|
if(!disassembled)
|
||||||
|
new /obj/item/shard( src.loc )
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/mirror/attack_alien(mob/living/user)
|
/obj/structure/mirror/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
switch(damage_type)
|
||||||
if(islarva(user))
|
if(BRUTE)
|
||||||
return
|
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE)
|
||||||
user.do_attack_animation(src)
|
if(BURN)
|
||||||
if(broken)
|
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE)
|
||||||
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
|
|
||||||
return
|
|
||||||
user.visible_message("<span class='danger'>[user] smashes [src]!</span>")
|
|
||||||
shatter()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/mirror/attack_animal(mob/living/user)
|
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
|
||||||
if(!isanimal(user))
|
|
||||||
return
|
|
||||||
var/mob/living/simple_animal/M = user
|
|
||||||
if(M.melee_damage_upper <= 0)
|
|
||||||
return
|
|
||||||
M.do_attack_animation(src)
|
|
||||||
if(broken)
|
|
||||||
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
|
|
||||||
return
|
|
||||||
user.visible_message("<span class='danger'>[user] smashes [src]!</span>")
|
|
||||||
shatter()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/mirror/attack_slime(mob/living/user)
|
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
|
||||||
var/mob/living/carbon/slime/S = user
|
|
||||||
if(!S.is_adult)
|
|
||||||
return
|
|
||||||
user.do_attack_animation(src)
|
|
||||||
if(broken)
|
|
||||||
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
|
|
||||||
return
|
|
||||||
user.visible_message("<span class='danger'>[user] smashes [src]!</span>")
|
|
||||||
shatter()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/mounted/mirror
|
/obj/item/mounted/mirror
|
||||||
name = "mirror"
|
name = "mirror"
|
||||||
@@ -153,7 +115,7 @@
|
|||||||
H.dna.real_name = newname
|
H.dna.real_name = newname
|
||||||
if(H.mind)
|
if(H.mind)
|
||||||
H.mind.name = newname
|
H.mind.name = newname
|
||||||
|
|
||||||
if(newname)
|
if(newname)
|
||||||
curse(user)
|
curse(user)
|
||||||
|
|
||||||
@@ -197,7 +159,7 @@
|
|||||||
|
|
||||||
if(voice_choice)
|
if(voice_choice)
|
||||||
curse(user)
|
curse(user)
|
||||||
|
|
||||||
/obj/structure/mirror/magic/on_ui_close(mob/user)
|
/obj/structure/mirror/magic/on_ui_close(mob/user)
|
||||||
curse(user)
|
curse(user)
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ GLOBAL_LIST_EMPTY(safes)
|
|||||||
if(open)
|
if(open)
|
||||||
to_chat(user, "The inside of the the door has numbers written on it: <b>[get_combination()]</b>")
|
to_chat(user, "The inside of the the door has numbers written on it: <b>[get_combination()]</b>")
|
||||||
|
|
||||||
/obj/structure/safe/blob_act()
|
/obj/structure/safe/blob_act(obj/structure/blob/B)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/safe/ex_act(severity)
|
/obj/structure/safe/ex_act(severity)
|
||||||
|
|||||||
@@ -6,6 +6,16 @@
|
|||||||
layer = 3.5
|
layer = 3.5
|
||||||
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)
|
||||||
|
|
||||||
|
/obj/structure/sign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
|
switch(damage_type)
|
||||||
|
if(BRUTE)
|
||||||
|
if(damage_amount)
|
||||||
|
playsound(src.loc, 'sound/weapons/slash.ogg', 80, TRUE)
|
||||||
|
else
|
||||||
|
playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE)
|
||||||
|
if(BURN)
|
||||||
|
playsound(loc, 'sound/items/welder.ogg', 80, TRUE)
|
||||||
|
|
||||||
/obj/structure/sign/ex_act(severity)
|
/obj/structure/sign/ex_act(severity)
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1.0)
|
if(1.0)
|
||||||
@@ -16,13 +26,6 @@
|
|||||||
return
|
return
|
||||||
if(3.0)
|
if(3.0)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
|
||||||
else
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/structure/sign/blob_act()
|
|
||||||
qdel(src)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/structure/sign/attackby(obj/item/tool as obj, mob/user as mob) //deconstruction
|
/obj/structure/sign/attackby(obj/item/tool as obj, mob/user as mob) //deconstruction
|
||||||
if(istype(tool, /obj/item/screwdriver) && !istype(src, /obj/structure/sign/double))
|
if(istype(tool, /obj/item/screwdriver) && !istype(src, /obj/structure/sign/double))
|
||||||
|
|||||||
@@ -24,42 +24,6 @@
|
|||||||
return
|
return
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/structure/spawner/blob_act(obj/structure/blob/B) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable
|
|
||||||
take_damage(400, BRUTE, "melee", 0, get_dir(src, B))
|
|
||||||
|
|
||||||
/obj/structure/spawner/ex_act(severity) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable
|
|
||||||
if(resistance_flags & INDESTRUCTIBLE)
|
|
||||||
return
|
|
||||||
switch(severity)
|
|
||||||
if(1)
|
|
||||||
obj_integrity = 0
|
|
||||||
qdel(src)
|
|
||||||
if(2)
|
|
||||||
take_damage(rand(100, 250), BRUTE, "bomb", 0)
|
|
||||||
if(3)
|
|
||||||
take_damage(rand(10, 90), BRUTE, "bomb", 0)
|
|
||||||
|
|
||||||
/obj/structure/spawner/mech_melee_attack(obj/mecha/M) //TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable
|
|
||||||
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>")
|
|
||||||
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/structure/spawner/syndicate
|
/obj/structure/spawner/syndicate
|
||||||
name = "warp beacon"
|
name = "warp beacon"
|
||||||
icon = 'icons/obj/device.dmi'
|
icon = 'icons/obj/device.dmi'
|
||||||
|
|||||||
@@ -85,11 +85,6 @@
|
|||||||
/obj/structure/statue/CanAtmosPass()
|
/obj/structure/statue/CanAtmosPass()
|
||||||
return !density
|
return !density
|
||||||
|
|
||||||
/obj/structure/statue/bullet_act(obj/item/projectile/Proj)
|
|
||||||
hardness -= Proj.damage
|
|
||||||
..()
|
|
||||||
CheckHardness()
|
|
||||||
|
|
||||||
/obj/structure/statue/proc/CheckHardness()
|
/obj/structure/statue/proc/CheckHardness()
|
||||||
if(hardness <= 0)
|
if(hardness <= 0)
|
||||||
Dismantle(TRUE)
|
Dismantle(TRUE)
|
||||||
|
|||||||
@@ -77,15 +77,15 @@
|
|||||||
M.layer = initial(M.layer)
|
M.layer = initial(M.layer)
|
||||||
overlays -= nest_overlay
|
overlays -= nest_overlay
|
||||||
|
|
||||||
/obj/structure/bed/nest/attackby(obj/item/W as obj, mob/user as mob, params)
|
/obj/structure/bed/nest/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
switch(damage_type)
|
||||||
var/aforce = W.force
|
if(BRUTE)
|
||||||
health = max(0, health - aforce)
|
playsound(loc, 'sound/effects/attackblob.ogg', 100, TRUE)
|
||||||
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
|
if(BURN)
|
||||||
visible_message("<span class='warning'>[user] hits [src] with [W]!</span>", 1)
|
playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||||
healthcheck()
|
|
||||||
|
|
||||||
/obj/structure/bed/nest/proc/healthcheck()
|
/obj/structure/bed/nest/attack_alien(mob/living/carbon/alien/user)
|
||||||
if(health <= 0)
|
if(user.a_intent != INTENT_HARM)
|
||||||
density = FALSE
|
return attack_hand(user)
|
||||||
qdel(src)
|
else
|
||||||
|
return ..()
|
||||||
@@ -47,14 +47,6 @@
|
|||||||
playsound(loc, W.usesound, 50, 1)
|
playsound(loc, W.usesound, 50, 1)
|
||||||
new buildstacktype(loc, buildstackamount)
|
new buildstacktype(loc, buildstackamount)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/bed/attack_animal(mob/living/simple_animal/user)
|
|
||||||
if(user.environment_smash)
|
|
||||||
user.do_attack_animation(src)
|
|
||||||
visible_message("<span class='danger'>[user] smashes [src] apart!</span>")
|
|
||||||
new buildstacktype(loc, buildstackamount)
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Roller beds
|
* Roller beds
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -304,12 +304,6 @@
|
|||||||
if(prob(50))
|
if(prob(50))
|
||||||
new buildstacktype(loc, buildstackamount)
|
new buildstacktype(loc, buildstackamount)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
|
||||||
|
|
||||||
/obj/structure/chair/stool/blob_act()
|
|
||||||
if(prob(75))
|
|
||||||
new buildstacktype(loc, buildstackamount)
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
/obj/item/chair
|
/obj/item/chair
|
||||||
name = "chair"
|
name = "chair"
|
||||||
|
|||||||
@@ -706,11 +706,11 @@
|
|||||||
switch(damage_type)
|
switch(damage_type)
|
||||||
if(BRUTE)
|
if(BRUTE)
|
||||||
if(damage_amount)
|
if(damage_amount)
|
||||||
playsound(loc, 'sound/items/dodgeball.ogg', 80, 1)
|
playsound(loc, 'sound/items/dodgeball.ogg', 80, TRUE)
|
||||||
else
|
else
|
||||||
playsound(loc, 'sound/weapons/tap.ogg', 50, 1)
|
playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE)
|
||||||
if(BURN)
|
if(BURN)
|
||||||
playsound(loc, 'sound/items/welder.ogg', 40, 1)
|
playsound(loc, 'sound/items/welder.ogg', 40, TRUE)
|
||||||
|
|
||||||
/obj/structure/rack/skeletal_bar
|
/obj/structure/rack/skeletal_bar
|
||||||
name = "skeletal minibar"
|
name = "skeletal minibar"
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/structure/window/singularity_pull(S, current_size)
|
/obj/structure/window/singularity_pull(S, current_size)
|
||||||
|
..()
|
||||||
if(current_size >= STAGE_FIVE)
|
if(current_size >= STAGE_FIVE)
|
||||||
deconstruct(FALSE)
|
deconstruct(FALSE)
|
||||||
|
|
||||||
@@ -333,11 +334,11 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
|
|||||||
switch(damage_type)
|
switch(damage_type)
|
||||||
if(BRUTE)
|
if(BRUTE)
|
||||||
if(damage_amount)
|
if(damage_amount)
|
||||||
playsound(src, hitsound, 75, 1)
|
playsound(src, hitsound, 75, TRUE)
|
||||||
else
|
else
|
||||||
playsound(src, 'sound/weapons/tap.ogg', 50, 1)
|
playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
|
||||||
if(BURN)
|
if(BURN)
|
||||||
playsound(src, 'sound/items/welder.ogg', 100, 1)
|
playsound(src, 'sound/items/Welder.ogg', 100, TRUE)
|
||||||
|
|
||||||
/obj/structure/window/deconstruct(disassembled = TRUE)
|
/obj/structure/window/deconstruct(disassembled = TRUE)
|
||||||
if(QDELETED(src))
|
if(QDELETED(src))
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
|
|||||||
if(A.level == 3)
|
if(A.level == 3)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/turf/simulated/floor/blob_act()
|
/turf/simulated/floor/blob_act(obj/structure/blob/B)
|
||||||
return
|
return
|
||||||
|
|
||||||
/turf/simulated/floor/proc/update_icon()
|
/turf/simulated/floor/proc/update_icon()
|
||||||
@@ -211,6 +211,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
|
|||||||
return make_plating()
|
return make_plating()
|
||||||
|
|
||||||
/turf/simulated/floor/singularity_pull(S, current_size)
|
/turf/simulated/floor/singularity_pull(S, current_size)
|
||||||
|
..()
|
||||||
if(current_size == STAGE_THREE)
|
if(current_size == STAGE_THREE)
|
||||||
if(prob(30))
|
if(prob(30))
|
||||||
if(builtin_tile)
|
if(builtin_tile)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/turf/simulated/floor/indestructible/ex_act(severity)
|
/turf/simulated/floor/indestructible/ex_act(severity)
|
||||||
return
|
return
|
||||||
|
|
||||||
/turf/simulated/floor/indestructible/blob_act()
|
/turf/simulated/floor/indestructible/blob_act(obj/structure/blob/B)
|
||||||
return
|
return
|
||||||
|
|
||||||
/turf/simulated/floor/indestructible/singularity_act()
|
/turf/simulated/floor/indestructible/singularity_act()
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
if(burn_stuff(AM))
|
if(burn_stuff(AM))
|
||||||
START_PROCESSING(SSprocessing, src)
|
START_PROCESSING(SSprocessing, src)
|
||||||
|
|
||||||
/turf/simulated/floor/plating/lava/hitby(atom/movable/AM)
|
/turf/simulated/floor/plating/lava/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
|
||||||
if(burn_stuff(AM))
|
if(burn_stuff(AM))
|
||||||
START_PROCESSING(SSprocessing, src)
|
START_PROCESSING(SSprocessing, src)
|
||||||
|
|
||||||
|
|||||||
@@ -186,7 +186,7 @@
|
|||||||
if(prob(50))
|
if(prob(50))
|
||||||
ChangeTurf(baseturf)
|
ChangeTurf(baseturf)
|
||||||
|
|
||||||
/turf/simulated/floor/engine/blob_act()
|
/turf/simulated/floor/engine/blob_act(obj/structure/blob/B)
|
||||||
if(prob(25))
|
if(prob(25))
|
||||||
ChangeTurf(baseturf)
|
ChangeTurf(baseturf)
|
||||||
|
|
||||||
@@ -221,12 +221,14 @@
|
|||||||
assume_air(adding)
|
assume_air(adding)
|
||||||
|
|
||||||
/turf/simulated/floor/engine/singularity_pull(S, current_size)
|
/turf/simulated/floor/engine/singularity_pull(S, current_size)
|
||||||
|
..()
|
||||||
if(current_size >= STAGE_FIVE)
|
if(current_size >= STAGE_FIVE)
|
||||||
if(prob(30))
|
if(floor_tile)
|
||||||
make_plating() //does not actually do anything
|
|
||||||
else
|
|
||||||
if(prob(30))
|
if(prob(30))
|
||||||
ReplaceWithLattice()
|
new floor_tile(src)
|
||||||
|
make_plating()
|
||||||
|
else if(prob(30))
|
||||||
|
ReplaceWithLattice()
|
||||||
|
|
||||||
/turf/simulated/floor/engine/vacuum
|
/turf/simulated/floor/engine/vacuum
|
||||||
name = "vacuum floor"
|
name = "vacuum floor"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user