mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-30 15:38:02 +01:00
Merge remote-tracking branch 'upstream/dev-freeze' into dev
This commit is contained in:
@@ -815,6 +815,11 @@ var/global/list/gear_datums = list()
|
||||
sort_category = "misc"
|
||||
cost = 2
|
||||
|
||||
/datum/gear/combitool
|
||||
display_name = "combi-tool"
|
||||
path = /obj/item/weapon/combitool
|
||||
cost = 3
|
||||
|
||||
// Stuff worn on the ears. Items here go in the "ears" sort_category but they must not use
|
||||
// the slot_r_ear or slot_l_ear as the slot, or else players will spawn with no headset.
|
||||
/datum/gear/skrell_chain
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
usr << "<span class='warning'>The suit is not initialized.</span>"
|
||||
return 0
|
||||
|
||||
if(holder.security_check_enabled && !(istype(usr,/mob/living/silicon) || holder.allowed(usr)))
|
||||
if(holder.security_check_enabled && !holder.check_suit_access(usr))
|
||||
usr << "<span class='danger'>Access denied.</span>"
|
||||
return
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20)
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0
|
||||
siemens_coefficient = 0.1
|
||||
permeability_coefficient = 0.1
|
||||
|
||||
var/interface_path = "hardsuit.tmpl"
|
||||
var/ai_interface_path = "hardsuit.tmpl"
|
||||
@@ -278,7 +278,7 @@
|
||||
module.deactivate()
|
||||
for(var/obj/item/piece in list(helmet,boots,gloves,chest))
|
||||
if(!piece) continue
|
||||
if(canremove && (flags & AIRTIGHT))
|
||||
if(canremove)
|
||||
piece.flags &= ~STOPSPRESSUREDMAGE
|
||||
piece.flags &= ~AIRTIGHT
|
||||
else
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
desc = "A suit worn by the commander of a NanoTrasen Emergency Response Team. Has blue highlights. Armoured and space ready."
|
||||
suit_type = "ERT commander"
|
||||
icon_state = "ert_commander_rig"
|
||||
siemens_coefficient = 0.6
|
||||
offline_slowdown = 3
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/ert
|
||||
|
||||
@@ -878,7 +878,7 @@ I said no!
|
||||
|
||||
/datum/recipe/poppypretzel
|
||||
items = list(
|
||||
/obj/item/seeds/poppyseed,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/poppy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel
|
||||
|
||||
@@ -56,9 +56,6 @@
|
||||
/obj/item/seeds/replicapod
|
||||
seed_type = "diona"
|
||||
|
||||
/obj/item/seeds/poppyseed
|
||||
seed_type = "poppies"
|
||||
|
||||
/obj/item/seeds/chiliseed
|
||||
seed_type = "chili"
|
||||
|
||||
|
||||
@@ -83,18 +83,7 @@
|
||||
/mob/dead/attackby(obj/item/W, mob/user)
|
||||
if(istype(W,/obj/item/weapon/book/tome))
|
||||
var/mob/dead/M = src
|
||||
if(src.invisibility != 0)
|
||||
M.invisibility = 0
|
||||
user.visible_message( \
|
||||
"\red [user] drags ghost, [M], to our plan of reality!", \
|
||||
"\red You drag [M] to our plan of reality!" \
|
||||
)
|
||||
else
|
||||
user.visible_message ( \
|
||||
"\red [user] just tried to smash his book into that ghost! It's not very effective", \
|
||||
"\red You get the feeling that the ghost can't become any more visible." \
|
||||
)
|
||||
|
||||
M.manifest(user)
|
||||
|
||||
/mob/dead/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
return 1
|
||||
@@ -556,9 +545,23 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
usr.visible_message("<span class='deadsay'><b>[src]</b> points to [A]</span>")
|
||||
return 1
|
||||
|
||||
/mob/dead/proc/manifest()
|
||||
verbs += /mob/dead/proc/toggle_visibility
|
||||
toggle_visibility()
|
||||
/mob/dead/proc/manifest(mob/user)
|
||||
var/is_manifest = 0
|
||||
if(!is_manifest)
|
||||
is_manifest = 1
|
||||
verbs += /mob/dead/proc/toggle_visibility
|
||||
|
||||
if(src.invisibility != 0)
|
||||
user.visible_message( \
|
||||
"<span class='warning'>[user] drags ghost, [src], to our plan of reality!</span>", \
|
||||
"<span class='warning'>You drag [src] to our plan of reality!</span>" \
|
||||
)
|
||||
toggle_visibility(1)
|
||||
else
|
||||
user.visible_message ( \
|
||||
"<span class='warning'>[user] just tried to smash his book into that ghost! It's not very effective.</span>", \
|
||||
"<span class='warning'>You get the feeling that the ghost can't become any more visible.</span>" \
|
||||
)
|
||||
|
||||
/mob/dead/proc/toggle_icon(var/icon)
|
||||
if(!client)
|
||||
@@ -574,22 +577,21 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
var/image/J = image('icons/mob/mob.dmi', loc = src, icon_state = icon)
|
||||
client.images += J
|
||||
|
||||
/mob/dead/proc/toggle_visibility()
|
||||
/mob/dead/proc/toggle_visibility(var/forced = 0)
|
||||
set category = "Ghost"
|
||||
set name = "Toggle Visibility"
|
||||
set desc = "Allows you to turn (in)visible (almost) at will."
|
||||
|
||||
var/toggled_invisible
|
||||
|
||||
if(invisibility && world.time < toggled_invisible + 600)
|
||||
if(!forced && invisibility && world.time < toggled_invisible + 600)
|
||||
src << "You must gather strength before you can turn visible again..."
|
||||
return
|
||||
|
||||
if(invisibility == 0)
|
||||
toggled_invisible = world.time
|
||||
visible_message("<span class='emote'>It fades from sight...</span>", "<span class='info'>You are now invisible</span>")
|
||||
visible_message("<span class='emote'>It fades from sight...</span>", "<span class='info'>You are now invisible.</span>")
|
||||
else
|
||||
src << "<span class='info'>You are now visible</span>"
|
||||
src << "<span class='info'>You are now visible!</span>"
|
||||
|
||||
invisibility = invisibility == INVISIBILITY_OBSERVER ? 0 : INVISIBILITY_OBSERVER
|
||||
// Give the ghost a cult icon which should be visible only to itself
|
||||
|
||||
@@ -88,8 +88,12 @@
|
||||
if(wrapped) //Already have an item.
|
||||
//Temporary put wrapped into user so target's attackby() checks pass.
|
||||
wrapped.loc = user
|
||||
|
||||
//Pass the attack on to the target. This might delete/relocate wrapped.
|
||||
wrapped.afterattack(target,user)
|
||||
var/resolved = target.attackby(wrapped,user)
|
||||
if(!resolved && wrapped && target)
|
||||
wrapped.afterattack(target,user,1)
|
||||
|
||||
//If wrapped was neither deleted nor put into target, put it back into the gripper.
|
||||
if(wrapped && user && (wrapped.loc == user))
|
||||
wrapped.loc = src
|
||||
|
||||
@@ -89,17 +89,17 @@
|
||||
/mob/living/simple_animal/hostile/proc/AttackingTarget()
|
||||
if(!Adjacent(target_mob))
|
||||
return
|
||||
//if(isliving(target_mob))
|
||||
//var/mob/living/L = target_mob
|
||||
//L.attack_animal(src)
|
||||
//return L
|
||||
//if(istype(target_mob,/obj/mecha))
|
||||
//var/obj/mecha/M = target_mob
|
||||
//M.attack_animal(src)
|
||||
//return M
|
||||
//if(istype(target_mob,/obj/machinery/bot))
|
||||
//var/obj/machinery/bot/B = target_mob
|
||||
//B.attack_animal(src)
|
||||
if(isliving(target_mob))
|
||||
var/mob/living/L = target_mob
|
||||
L.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext)
|
||||
return L
|
||||
if(istype(target_mob,/obj/mecha))
|
||||
var/obj/mecha/M = target_mob
|
||||
M.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext)
|
||||
return M
|
||||
if(istype(target_mob,/obj/machinery/bot))
|
||||
var/obj/machinery/bot/B = target_mob
|
||||
B.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext)
|
||||
|
||||
/mob/living/simple_animal/hostile/proc/LoseTarget()
|
||||
stance = HOSTILE_STANCE_IDLE
|
||||
@@ -193,10 +193,10 @@
|
||||
/mob/living/simple_animal/hostile/proc/DestroySurroundings()
|
||||
if(prob(break_stuff_probability))
|
||||
for(var/dir in cardinal) // North, South, East, West
|
||||
//for(var/obj/structure/window/obstacle in get_step(src, dir))
|
||||
//if(obstacle.dir == reverse_dir[dir]) // So that windows get smashed in the right order
|
||||
//obstacle.attack_animal(src)
|
||||
//return
|
||||
//var/obj/structure/obstacle = locate(/obj/structure, get_step(src, dir))
|
||||
//if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille))
|
||||
//obstacle.attack_animal(src)
|
||||
for(var/obj/structure/window/obstacle in get_step(src, dir))
|
||||
if(obstacle.dir == reverse_dir[dir]) // So that windows get smashed in the right order
|
||||
obstacle.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext)
|
||||
return
|
||||
var/obj/structure/obstacle = locate(/obj/structure, get_step(src, dir))
|
||||
if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille))
|
||||
obstacle.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext)
|
||||
|
||||
@@ -313,7 +313,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/orange
|
||||
name = "orange"
|
||||
desc = "It's an tangy fruit."
|
||||
desc = "It's a tangy fruit."
|
||||
icon_state = "orange"
|
||||
potency = 20
|
||||
filling_color = "#FAAD28"
|
||||
|
||||
Reference in New Issue
Block a user