mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-24 12:37:50 +01:00
Merge branch 'master' into upstream-merge-5654
This commit is contained in:
@@ -381,8 +381,8 @@
|
||||
else
|
||||
icon_state = icon_opened
|
||||
|
||||
/obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys", var/wallbreaker)
|
||||
if(damage < 10 || !wallbreaker)
|
||||
/obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys")
|
||||
if(damage < STRUCTURE_MIN_DAMAGE_THRESHOLD)
|
||||
return
|
||||
user.do_attack_animation(src)
|
||||
visible_message("<span class='danger'>[user] [attack_message] the [src]!</span>")
|
||||
@@ -459,4 +459,4 @@
|
||||
if(src.loc)
|
||||
if(istype(src.loc, /obj/structure/closet))
|
||||
return (loc.return_air_for_internal_lifeform(L))
|
||||
return return_air()
|
||||
return return_air()
|
||||
|
||||
@@ -90,23 +90,23 @@
|
||||
|
||||
/obj/structure/largecrate/animal/corgi
|
||||
name = "corgi carrier"
|
||||
starts_with = list(/mob/living/simple_animal/corgi)
|
||||
starts_with = list(/mob/living/simple_mob/animal/passive/dog/corgi)
|
||||
|
||||
/obj/structure/largecrate/animal/cow
|
||||
name = "cow crate"
|
||||
starts_with = list(/mob/living/simple_animal/cow)
|
||||
starts_with = list(/mob/living/simple_mob/animal/passive/cow)
|
||||
|
||||
/obj/structure/largecrate/animal/goat
|
||||
name = "goat crate"
|
||||
starts_with = list(/mob/living/simple_animal/retaliate/goat)
|
||||
starts_with = list(/mob/living/simple_mob/animal/goat)
|
||||
|
||||
/obj/structure/largecrate/animal/cat
|
||||
name = "cat carrier"
|
||||
starts_with = list(/mob/living/simple_animal/cat)
|
||||
starts_with = list(/mob/living/simple_mob/animal/passive/cat)
|
||||
|
||||
/obj/structure/largecrate/animal/cat/bones
|
||||
starts_with = list(/mob/living/simple_animal/cat/fluff/bones)
|
||||
starts_with = list(/mob/living/simple_mob/animal/passive/cat/bones)
|
||||
|
||||
/obj/structure/largecrate/animal/chick
|
||||
name = "chicken crate"
|
||||
starts_with = list(/mob/living/simple_animal/chick = 5)
|
||||
starts_with = list(/mob/living/simple_mob/animal/passive/chick = 5)
|
||||
|
||||
@@ -5,28 +5,27 @@
|
||||
/obj/structure/largecrate/birds/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(W.is_crowbar())
|
||||
new /obj/item/stack/material/wood(src)
|
||||
new /mob/living/simple_animal/bird(src)
|
||||
new /mob/living/simple_animal/bird/kea(src)
|
||||
new /mob/living/simple_animal/bird/eclectus(src)
|
||||
new /mob/living/simple_animal/bird/greybird(src)
|
||||
new /mob/living/simple_animal/bird/eclectusf(src)
|
||||
new /mob/living/simple_animal/bird/blue_caique(src)
|
||||
new /mob/living/simple_animal/bird/white_caique(src)
|
||||
new /mob/living/simple_animal/bird/green_budgerigar(src)
|
||||
new /mob/living/simple_animal/bird/blue_Budgerigar(src)
|
||||
new /mob/living/simple_animal/bird/bluegreen_Budgerigar(src)
|
||||
new /mob/living/simple_animal/bird/commonblackbird(src)
|
||||
new /mob/living/simple_animal/bird/azuretit(src)
|
||||
new /mob/living/simple_animal/bird/europeanrobin(src)
|
||||
new /mob/living/simple_animal/bird/goldcrest(src)
|
||||
new /mob/living/simple_animal/bird/ringneckdove(src)
|
||||
new /mob/living/simple_animal/bird/cockatiel(src)
|
||||
new /mob/living/simple_animal/bird/white_cockatiel(src)
|
||||
new /mob/living/simple_animal/bird/yellowish_cockatiel(src)
|
||||
new /mob/living/simple_animal/bird/grey_cockatiel(src)
|
||||
new /mob/living/simple_animal/bird/too(src)
|
||||
new /mob/living/simple_animal/bird/hooded_too(src)
|
||||
new /mob/living/simple_animal/bird/pink_too(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/kea(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/eclectus(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/grey_parrot(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/black_headed_caique(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/white_caique(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/budgerigar(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/blue(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/bluegreen(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/black_bird(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/azure_tit(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/european_robin(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/goldcrest(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/ringneck_dove(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/white(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/yellowish(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/grey(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/sulphur_cockatoo(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/white_cockatoo(src)
|
||||
new /mob/living/simple_mob/animal/passive/bird/parrot/pink_cockatoo(src)
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/atom/movable/AM in contents)
|
||||
if(AM.simulated) AM.forceMove(T)
|
||||
@@ -39,72 +38,72 @@
|
||||
|
||||
/obj/structure/largecrate/animal/pred
|
||||
name = "Predator carrier"
|
||||
starts_with = list(/mob/living/simple_animal/catgirl)
|
||||
starts_with = list(/mob/living/simple_mob/vore/catgirl)
|
||||
|
||||
/obj/structure/largecrate/animal/pred/initialize() //This is nessesary to get a random one each time.
|
||||
starts_with = list(pick(/mob/living/simple_animal/retaliate/bee,
|
||||
/mob/living/simple_animal/catgirl;3,
|
||||
/mob/living/simple_animal/hostile/frog,
|
||||
/mob/living/simple_animal/horse,
|
||||
/mob/living/simple_animal/hostile/panther,
|
||||
/mob/living/simple_animal/hostile/giant_snake,
|
||||
/mob/living/simple_animal/hostile/wolf,
|
||||
/mob/living/simple_animal/hostile/bear;0.5,
|
||||
/mob/living/simple_animal/hostile/bear/brown;0.5,
|
||||
/mob/living/simple_animal/hostile/carp,
|
||||
/mob/living/simple_animal/hostile/mimic,
|
||||
/mob/living/simple_animal/hostile/rat,
|
||||
/mob/living/simple_animal/hostile/rat/passive,
|
||||
/mob/living/simple_animal/otie;0.5))
|
||||
starts_with = list(pick(/mob/living/simple_mob/vore/bee,
|
||||
/mob/living/simple_mob/vore/catgirl;3,
|
||||
/mob/living/simple_mob/vore/frog,
|
||||
/mob/living/simple_mob/horse,
|
||||
/mob/living/simple_mob/vore/panther,
|
||||
/mob/living/simple_mob/vore/giant_snake,
|
||||
/mob/living/simple_mob/vore/wolf,
|
||||
/mob/living/simple_mob/animal/space/bear;0.5,
|
||||
/mob/living/simple_mob/animal/space/carp,
|
||||
/mob/living/simple_mob/animal/space/mimic,
|
||||
/mob/living/simple_mob/vore/rat,
|
||||
/mob/living/simple_mob/vore/rat/passive,
|
||||
// /mob/living/simple_mob/otie;0.5
|
||||
))
|
||||
return ..()
|
||||
|
||||
/obj/structure/largecrate/animal/dangerous
|
||||
name = "Dangerous Predator carrier"
|
||||
starts_with = list(/mob/living/simple_animal/hostile/alien)
|
||||
starts_with = list(/mob/living/simple_mob/animal/space/alien)
|
||||
|
||||
/obj/structure/largecrate/animal/dangerous/initialize()
|
||||
starts_with = list(pick(/mob/living/simple_animal/hostile/carp/pike,
|
||||
/mob/living/simple_animal/hostile/deathclaw,
|
||||
/mob/living/simple_animal/hostile/dino,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/simple_animal/hostile/alien/drone,
|
||||
/mob/living/simple_animal/hostile/alien/sentinel,
|
||||
/mob/living/simple_animal/hostile/alien/queen,
|
||||
/mob/living/simple_animal/otie/feral,
|
||||
/mob/living/simple_animal/otie/red,
|
||||
/mob/living/simple_animal/hostile/corrupthound))
|
||||
starts_with = list(pick(/mob/living/simple_mob/animal/space/carp/large,
|
||||
/mob/living/simple_mob/hostile/deathclaw,
|
||||
/mob/living/simple_mob/vore/dino,
|
||||
/mob/living/simple_mob/animal/space/alien,
|
||||
/mob/living/simple_mob/animal/space/alien/drone,
|
||||
/mob/living/simple_mob/animal/space/alien/sentinel,
|
||||
/mob/living/simple_mob/animal/space/alien/queen,
|
||||
// /mob/living/simple_mob/otie/feral,
|
||||
// /mob/living/simple_mob/otie/red,
|
||||
/mob/living/simple_mob/vore/corrupthound))
|
||||
return ..()
|
||||
|
||||
/*
|
||||
/obj/structure/largecrate/animal/guardbeast
|
||||
name = "VARMAcorp autoNOMous security solution"
|
||||
desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs."
|
||||
icon = 'icons/obj/storage_vr.dmi'
|
||||
icon_state = "sotiecrate"
|
||||
starts_with = list(/mob/living/simple_animal/otie/security)
|
||||
starts_with = list(/mob/living/simple_mob/otie/security)
|
||||
|
||||
/obj/structure/largecrate/animal/guardmutant
|
||||
name = "VARMAcorp autoNOMous security solution for hostile environments."
|
||||
desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs. This one can survive hostile atmosphere."
|
||||
icon = 'icons/obj/storage_vr.dmi'
|
||||
icon_state = "sotiecrate"
|
||||
starts_with = list(/mob/living/simple_animal/otie/security/phoron)
|
||||
starts_with = list(/mob/living/simple_mob/otie/security/phoron)
|
||||
|
||||
/obj/structure/largecrate/animal/otie
|
||||
name = "VARMAcorp adoptable reject (Dangerous!)"
|
||||
desc = "A warning on the side says the creature inside was returned to the supplier after injuring or devouring several unlucky members of the previous adoption family. It was given a second chance with the next customer. Godspeed and good luck with your new pet!"
|
||||
icon = 'icons/obj/storage_vr.dmi'
|
||||
icon_state = "otiecrate2"
|
||||
starts_with = list(/mob/living/simple_animal/otie/cotie)
|
||||
starts_with = list(/mob/living/simple_mob/otie/cotie)
|
||||
var/taped = 1
|
||||
|
||||
/obj/structure/largecrate/animal/otie/phoron
|
||||
name = "VARMAcorp adaptive beta subject (Experimental)"
|
||||
desc = "VARMAcorp experimental hostile environment adaptive breeding development kit. WARNING, DO NOT RELEASE IN WILD!"
|
||||
starts_with = list(/mob/living/simple_animal/otie/cotie/phoron)
|
||||
starts_with = list(/mob/living/simple_mob/otie/cotie/phoron)
|
||||
|
||||
/obj/structure/largecrate/animal/otie/phoron/initialize()
|
||||
starts_with = list(pick(/mob/living/simple_animal/otie/cotie/phoron;2,
|
||||
/mob/living/simple_animal/otie/red/friendly;0.5))
|
||||
starts_with = list(pick(/mob/living/simple_mob/otie/cotie/phoron;2,
|
||||
/mob/living/simple_mob/otie/red/friendly;0.5))
|
||||
return ..()
|
||||
|
||||
/obj/structure/largecrate/animal/otie/attack_hand(mob/living/carbon/human/M as mob)//I just couldn't decide between the icons lmao
|
||||
@@ -113,23 +112,24 @@
|
||||
icon_state = "otiecrate"
|
||||
taped = 0
|
||||
..()
|
||||
*/ //VORESTATION AI REMOVAL, Oties are still fucking broken.
|
||||
|
||||
/obj/structure/largecrate/animal/catgirl
|
||||
name = "Catgirl Crate"
|
||||
desc = "A sketchy looking crate with airholes that seems to have had most marks and stickers removed. You can almost make out 'genetically-engineered subject' written on it."
|
||||
starts_with = list(/mob/living/simple_animal/catgirl)
|
||||
starts_with = list(/mob/living/simple_mob/vore/catgirl)
|
||||
|
||||
/obj/structure/largecrate/animal/wolfgirl
|
||||
name = "Wolfgirl Crate"
|
||||
desc = "A sketchy looking crate with airholes that shakes and thuds every now and then. Someone seems to be demanding they be let out."
|
||||
starts_with = list(/mob/living/simple_animal/retaliate/wolfgirl)
|
||||
starts_with = list(/mob/living/simple_mob/vore/wolfgirl)
|
||||
|
||||
/obj/structure/largecrate/animal/fennec
|
||||
name = "Fennec Crate"
|
||||
desc = "Bounces around a lot. Looks messily packaged, were they in a hurry?"
|
||||
starts_with = list(/mob/living/simple_animal/fennec)
|
||||
starts_with = list(/mob/living/simple_mob/fennec)
|
||||
|
||||
/obj/structure/largecrate/animal/fennec/initialize()
|
||||
starts_with = list(pick(/mob/living/simple_animal/fennec,
|
||||
/mob/living/simple_animal/retaliate/fennix;0.5))
|
||||
starts_with = list(pick(/mob/living/simple_mob/fennec,
|
||||
/mob/living/simple_mob/vore/fennix;0.5))
|
||||
return ..()
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
/obj/structure/ghost_pod/manual/corgi/create_occupant(var/mob/M)
|
||||
lightning_strike(get_turf(src), cosmetic = TRUE)
|
||||
density = FALSE
|
||||
var/mob/living/simple_animal/corgi/R = new(get_turf(src))
|
||||
var/mob/living/simple_mob/animal/passive/dog/corgi/R = new(get_turf(src))
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(R)
|
||||
to_chat(M, "<span class='notice'>You are a <b>Corgi</b>! Woof!</span>")
|
||||
@@ -47,4 +47,4 @@
|
||||
R.ghost_inhabit(M)
|
||||
visible_message("<span class='warning'>The blade shines brightly for a brief moment as [usr] pulls it out of the stone!</span>")
|
||||
log_and_message_admins("successfully acquired a cursed sword.")
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -83,8 +83,8 @@
|
||||
health = (displaced_health - round(current_damage / 4))
|
||||
cover = 25
|
||||
|
||||
/obj/structure/girder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart", var/wallbreaker)
|
||||
if(!damage || !wallbreaker)
|
||||
/obj/structure/girder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart")
|
||||
if(damage < STRUCTURE_MIN_DAMAGE_THRESHOLD)
|
||||
return 0
|
||||
user.do_attack_animation(src)
|
||||
visible_message("<span class='danger'>[user] [attack_message] the [src]!</span>")
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
src.set_dir(turn(src.dir, 90))
|
||||
return
|
||||
else
|
||||
if(istype(usr,/mob/living/simple_animal/mouse))
|
||||
if(ismouse(usr))
|
||||
return
|
||||
if(!usr || !isturf(usr.loc))
|
||||
return
|
||||
|
||||
@@ -574,6 +574,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
icon = 'icons/mecha/mecha.dmi'
|
||||
icon_state = "engineering_pod-broken"
|
||||
density = TRUE
|
||||
anchored = FALSE // In case a dead mecha-mob dies in a bad spot.
|
||||
|
||||
chance_uncommon = 20
|
||||
chance_rare = 10
|
||||
@@ -615,7 +616,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
/obj/structure/loot_pile/mecha/ripley
|
||||
name = "ripley wreckage"
|
||||
desc = "The ruins of some unfortunate ripley. Perhaps something is salvageable."
|
||||
icon_states_to_use = list("ripley-broken", "firefighter-broken", "ripley-broken-old")
|
||||
icon_state = "ripley-broken"
|
||||
|
||||
common_loot = list(
|
||||
/obj/random/tool,
|
||||
@@ -649,6 +650,12 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged
|
||||
)
|
||||
|
||||
/obj/structure/loot_pile/mecha/ripley/firefighter
|
||||
icon_state = "firefighter-broken"
|
||||
|
||||
/obj/structure/loot_pile/mecha/ripley/random_sprite
|
||||
icon_states_to_use = list("ripley-broken", "firefighter-broken", "ripley-broken-old")
|
||||
|
||||
//Death-Ripley, same common, but more combat-exosuit-based
|
||||
/obj/structure/loot_pile/mecha/deathripley
|
||||
name = "strange ripley wreckage"
|
||||
@@ -719,6 +726,14 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
/obj/item/mecha_parts/mecha_equipment/shocker
|
||||
)
|
||||
|
||||
/obj/structure/loot_pile/mecha/odysseus/murdysseus
|
||||
icon_state = "murdysseus-broken"
|
||||
|
||||
/obj/structure/loot_pile/mecha/hoverpod
|
||||
name = "hoverpod wreckage"
|
||||
desc = "The ruins of some unfortunate hoverpod. Perhaps something is salvageable."
|
||||
icon_state = "engineering_pod"
|
||||
|
||||
/obj/structure/loot_pile/mecha/gygax
|
||||
name = "gygax wreckage"
|
||||
desc = "The ruins of some unfortunate gygax. Perhaps something is salvageable."
|
||||
@@ -759,6 +774,18 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
|
||||
)
|
||||
|
||||
/obj/structure/loot_pile/mecha/gygax/dark
|
||||
icon_state = "darkgygax-broken"
|
||||
|
||||
// Todo: Better loot.
|
||||
/obj/structure/loot_pile/mecha/gygax/dark/adv
|
||||
icon_state = "darkgygax_adv-broken"
|
||||
icon_scale = 1.5
|
||||
pixel_y = 8
|
||||
|
||||
/obj/structure/loot_pile/mecha/gygax/medgax
|
||||
icon_state = "medgax-broken"
|
||||
|
||||
/obj/structure/loot_pile/mecha/durand
|
||||
name = "durand wreckage"
|
||||
desc = "The ruins of some unfortunate durand. Perhaps something is salvageable."
|
||||
@@ -799,6 +826,22 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
|
||||
)
|
||||
|
||||
/obj/structure/loot_pile/mecha/marauder
|
||||
name = "marauder wreckage"
|
||||
desc = "The ruins of some unfortunate marauder. Perhaps something is salvagable."
|
||||
icon_state = "marauder-broken"
|
||||
// Todo: Better loot.
|
||||
|
||||
/obj/structure/loot_pile/mecha/marauder/seraph
|
||||
name = "seraph wreckage"
|
||||
desc = "The ruins of some unfortunate seraph. Perhaps something is salvagable."
|
||||
icon_state = "seraph-broken"
|
||||
|
||||
/obj/structure/loot_pile/mecha/marauder/mauler
|
||||
name = "mauler wreckage"
|
||||
desc = "The ruins of some unfortunate mauler. Perhaps something is salvagable."
|
||||
icon_state = "mauler-broken"
|
||||
|
||||
/obj/structure/loot_pile/mecha/phazon
|
||||
name = "phazon wreckage"
|
||||
desc = "The ruins of some unfortunate phazon. Perhaps something is salvageable."
|
||||
|
||||
@@ -321,7 +321,7 @@
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(istype(usr,/mob/living/simple_animal/mouse))
|
||||
if(istype(usr,/mob/living/simple_mob/animal/passive/mouse))
|
||||
return
|
||||
else if(!usr || !isturf(usr.loc))
|
||||
return
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
explosion_resistance = 5
|
||||
var/list/mobs_can_pass = list(
|
||||
/mob/living/bot,
|
||||
/mob/living/simple_animal/slime,
|
||||
/mob/living/simple_animal/mouse,
|
||||
/mob/living/simple_mob/slime/xenobio,
|
||||
/mob/living/simple_mob/animal/passive/mouse,
|
||||
/mob/living/silicon/robot/drone
|
||||
)
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/last_spawn
|
||||
var/spawn_delay = 150
|
||||
var/randomize_spawning = FALSE
|
||||
var/creature_types = list(/mob/living/simple_animal/retaliate/diyaab)
|
||||
var/creature_types = list(/mob/living/simple_mob/animal/sif/diyaab)
|
||||
var/list/den_mobs
|
||||
var/den_faction //The faction of any spawned creatures.
|
||||
var/max_creatures = 3 //Maximum number of living creatures this nest can have at one time.
|
||||
|
||||
@@ -206,6 +206,6 @@
|
||||
/obj/structure/simple_door/cult/TryToSwitchState(atom/user)
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
if(!iscultist(L) && !istype(L, /mob/living/simple_animal/construct))
|
||||
if(!iscultist(L) && !istype(L, /mob/living/simple_mob/construct))
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
src.set_dir(turn(src.dir, 90))
|
||||
return
|
||||
else
|
||||
if(istype(usr,/mob/living/simple_animal/mouse))
|
||||
if(istype(usr,/mob/living/simple_mob/animal/passive/mouse))
|
||||
return
|
||||
if(!usr || !isturf(usr.loc))
|
||||
return
|
||||
|
||||
@@ -221,6 +221,7 @@
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/happy,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/zoom,
|
||||
prob(4);/obj/item/weapon/gun/energy/sizegun,
|
||||
prob(3);/obj/item/weapon/implanter/sizecontrol,
|
||||
prob(3);/obj/item/weapon/material/butterfly,
|
||||
prob(3);/obj/item/weapon/material/butterfly/switchblade,
|
||||
prob(3);/obj/item/clothing/gloves/knuckledusters,
|
||||
@@ -265,7 +266,7 @@
|
||||
desc = "A small heap of trash, perfect for mice to nest in."
|
||||
icon = 'icons/obj/trash_piles.dmi'
|
||||
icon_state = "randompile"
|
||||
spawn_types = list(/mob/living/simple_animal/mouse)
|
||||
spawn_types = list(/mob/living/simple_mob/animal/passive/mouse)
|
||||
simultaneous_spawns = 1
|
||||
destructible = 1
|
||||
spawn_delay = 1 HOUR
|
||||
@@ -293,4 +294,4 @@
|
||||
|
||||
/obj/structure/mob_spawner/mouse_nest/get_death_report(var/mob/living/L)
|
||||
..()
|
||||
last_spawn = rand(world.time - spawn_delay, world.time)
|
||||
last_spawn = rand(world.time - spawn_delay, world.time)
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
var/shardtype = /obj/item/weapon/material/shard
|
||||
var/glasstype = null // Set this in subtypes. Null is assumed strange or otherwise impossible to dismantle, such as for shuttle glass.
|
||||
var/silicate = 0 // number of units of silicate
|
||||
var/fulltile = FALSE // Set to true on full-tile variants.
|
||||
|
||||
/obj/structure/window/examine(mob/user)
|
||||
. = ..(user)
|
||||
@@ -128,16 +129,10 @@
|
||||
/obj/structure/window/blob_act()
|
||||
take_damage(50)
|
||||
|
||||
//TODO: Make full windows a separate type of window.
|
||||
//Once a full window, it will always be a full window, so there's no point
|
||||
//having the same type for both.
|
||||
/obj/structure/window/proc/is_full_window()
|
||||
return (dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST)
|
||||
|
||||
/obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(istype(mover) && mover.checkpass(PASSGLASS))
|
||||
return 1
|
||||
if(is_full_window())
|
||||
if(is_fulltile())
|
||||
return 0 //full tile window, you can't move into it!
|
||||
if(get_dir(loc, target) & dir)
|
||||
return !density
|
||||
@@ -206,7 +201,7 @@
|
||||
user.setClickCooldown(user.get_attack_speed())
|
||||
if(!damage)
|
||||
return
|
||||
if(damage >= 10)
|
||||
if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD)
|
||||
visible_message("<span class='danger'>[user] smashes into [src]!</span>")
|
||||
if(reinf)
|
||||
damage = damage / 2
|
||||
@@ -388,8 +383,6 @@
|
||||
anchored = 0
|
||||
state = 0
|
||||
update_verbs()
|
||||
if(is_fulltile())
|
||||
maxhealth *= 2
|
||||
|
||||
health = maxhealth
|
||||
|
||||
@@ -416,9 +409,7 @@
|
||||
|
||||
//checks if this window is full-tile one
|
||||
/obj/structure/window/proc/is_fulltile()
|
||||
if(dir & (dir - 1))
|
||||
return 1
|
||||
return 0
|
||||
return fulltile
|
||||
|
||||
//This proc is used to update the icons of nearby windows. It should not be confused with update_nearby_tiles(), which is an atmos proc!
|
||||
/obj/structure/window/proc/update_nearby_icons()
|
||||
@@ -484,6 +475,10 @@
|
||||
maxhealth = 12.0
|
||||
force_threshold = 3
|
||||
|
||||
/obj/structure/window/basic/full
|
||||
maxhealth = 24
|
||||
fulltile = TRUE
|
||||
|
||||
/obj/structure/window/phoronbasic
|
||||
name = "phoron window"
|
||||
desc = "A borosilicate alloy window. It seems to be quite strong."
|
||||
@@ -497,8 +492,8 @@
|
||||
force_threshold = 5
|
||||
|
||||
/obj/structure/window/phoronbasic/full
|
||||
dir = SOUTHWEST
|
||||
maxhealth = 80
|
||||
fulltile = TRUE
|
||||
|
||||
/obj/structure/window/phoronreinforced
|
||||
name = "reinforced borosilicate window"
|
||||
@@ -514,8 +509,8 @@
|
||||
force_threshold = 10
|
||||
|
||||
/obj/structure/window/phoronreinforced/full
|
||||
dir = SOUTHWEST
|
||||
maxhealth = 160
|
||||
fulltile = TRUE
|
||||
|
||||
/obj/structure/window/reinforced
|
||||
name = "reinforced window"
|
||||
@@ -530,9 +525,9 @@
|
||||
force_threshold = 6
|
||||
|
||||
/obj/structure/window/reinforced/full
|
||||
dir = SOUTHWEST
|
||||
icon_state = "fwindow"
|
||||
maxhealth = 80
|
||||
fulltile = TRUE
|
||||
|
||||
/obj/structure/window/reinforced/tinted
|
||||
name = "tinted window"
|
||||
@@ -567,9 +562,9 @@
|
||||
var/id
|
||||
|
||||
/obj/structure/window/reinforced/polarized/full
|
||||
dir = SOUTHWEST
|
||||
icon_state = "fwindow"
|
||||
maxhealth = 80
|
||||
fulltile = TRUE
|
||||
|
||||
/obj/structure/window/reinforced/polarized/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/device/multitool) && !anchored) // Only allow programming if unanchored!
|
||||
|
||||
Reference in New Issue
Block a user