Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Hawk_v3
2019-08-27 00:22:31 +01:00
22 changed files with 148 additions and 39 deletions

View File

@@ -10,6 +10,7 @@
attack_verb = list("annoyed")
var/static/radial_examine = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_examine")
var/static/radial_use = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_use")
var/static/radial_pickup = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_pickup")
/obj/item/weapon/deskbell/examine(mob/user)
..()
@@ -26,6 +27,7 @@
//This defines the radials and what call we're assiging to them.
var/list/options = list()
options["examine"] = radial_examine
options["pick up"] = radial_pickup
if(!broken)
options["use"] = radial_use
@@ -54,6 +56,9 @@
ring(user)
add_fingerprint(user)
if("pick up")
..()
/obj/item/weapon/deskbell/proc/ring(mob/user)
if(user.a_intent == "harm")
playsound(user.loc, 'sound/effects/deskbell_rude.ogg', 50, 1)
@@ -78,9 +83,16 @@
to_chat(user,"<span class='notice'>You are not able to ring [src].</span>")
return 0
/obj/item/weapon/deskbell/attackby(obj/item/i, mob/user, params)
if(!istype(i))
/obj/item/weapon/deskbell/attackby(obj/item/W, mob/user, params)
if(!istype(W))
return
if(W.is_wrench() && isturf(loc))
if(do_after(5))
if(!src) return
to_chat(user, "<span class='notice'>You dissasemble the desk bell</span>")
new /obj/item/stack/material/steel(get_turf(src), 1)
qdel(src)
return
if(!broken)
ring(user)

View File

@@ -50,7 +50,7 @@
/mob/living/simple_mob/animal/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/aggressive/mimic,
/mob/living/simple_mob/vore/aggressive/rat,
/mob/living/simple_mob/vore/aggressive/rat/tame,
// /mob/living/simple_mob/otie;0.5

View File

@@ -6,6 +6,10 @@
robot_module_types += "Pupdozer"
return 1
var/list/shell_module_types = list(
"Standard", "Service", "Clerical"
)
var/global/list/acceptable_fruit_types= list(
"ambrosia",
"apple",

View File

@@ -18,7 +18,6 @@
feedback_add_details("admin_verb","SMITEV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
switch(smite_choice)
/*
if(SMITE_SHADEKIN_ATTACK)
var/turf/Tt = get_turf(target) //Turf for target
@@ -35,22 +34,22 @@
if(!Ts)
return //Didn't find shadekin spawn turf
var/mob/living/simple_mob/shadekin/red/shadekin = new(Ts)
var/mob/living/simple_mob/shadekin/red/ai/shadekin = new(Ts)
//Abuse of shadekin
shadekin.real_name = shadekin.name
shadekin.init_vore()
shadekin.ability_flags |= 0x1
shadekin.specific_targets = TRUE //Don't attack others
shadekin.phase_shift()
shadekin.target_mob = target
shadekin.stance = STANCE_ATTACK
shadekin.ai_holder.give_target(target)
shadekin.ai_holder.hostile = FALSE
shadekin.ai_holder.mauling = TRUE
shadekin.Life()
//Remove when done
spawn(10 SECONDS)
if(shadekin)
shadekin.death()*/ //VORESTATION AI TEMPORARY REMOVAL
shadekin.death()
/*if(SMITE_SHADEKIN_NOMF)
if(SMITE_SHADEKIN_NOMF)
var/list/kin_types = list(
"Red Eyes (Dark)" = /mob/living/simple_mob/shadekin/red/dark,
"Red Eyes (Light)" = /mob/living/simple_mob/shadekin/red/white,
@@ -93,7 +92,6 @@
shadekin.real_name = shadekin.name
shadekin.init_vore()
shadekin.can_be_drop_pred = TRUE
shadekin.ai_inactive = TRUE
shadekin.dir = SOUTH
shadekin.ability_flags |= 0x1
shadekin.phase_shift() //Homf
@@ -119,7 +117,7 @@
target.ghostize()
qdel(target)
qdel(shadekin)
*/
if(SMITE_REDSPACE_ABDUCT)
redspace_abduction(target, src)

View File

@@ -105,7 +105,7 @@
else if(W.is_wrench())
if(!air_supply)
to_chat(user, "There is not tank to remove.")
to_chat(user, "There is no tank to remove.")
return
if(user.r_hand && user.l_hand)
@@ -137,7 +137,7 @@
if("cell")
if(cell)
to_chat(user, "You detatch \the [cell] from \the [src]'s battery mount.")
to_chat(user, "You detach \the [cell] from \the [src]'s battery mount.")
for(var/obj/item/rig_module/module in installed_modules)
module.deactivate()
if(user.r_hand && user.l_hand)
@@ -165,7 +165,7 @@
return
var/obj/item/rig_module/removed = possible_removals[removal_choice]
to_chat(user, "You detatch \the [removed] from \the [src].")
to_chat(user, "You detach \the [removed] from \the [src].")
removed.forceMove(get_turf(src))
removed.removed()
installed_modules -= removed

View File

@@ -14,7 +14,6 @@
recipes += new/datum/stack_recipe("[display_name] grave marker", /obj/item/weapon/material/gravemarker, 5, time = 50, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] deskbell", /obj/item/weapon/deskbell, 1, on_floor = 1, supplied_material = "[name]")
if(integrity>=50)
recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
@@ -101,6 +100,7 @@
new/datum/stack_recipe("tall filing cabinet", /obj/structure/filingcabinet/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("chest drawer", /obj/structure/filingcabinet/chestdrawer, 4, time = 20, one_per_turf = 1, on_floor = 1), \
))
recipes += new/datum/stack_recipe("desk bell", /obj/item/weapon/deskbell, 1, on_floor = 1, supplied_material = "[name]")
/material/plasteel/generate_recipes()
..()

View File

@@ -34,15 +34,20 @@
var/list/threat_found_sounds = list('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg')
var/list/preparing_arrest_sounds = list('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/bcreep.ogg')
var/list/fighting_sounds = list('sound/voice/biamthelaw.ogg', 'sound/voice/bradio.ogg', 'sound/voice/bjustice.ogg')
//VOREStation Add - They don't like being pulled. This is going to fuck with slimesky, but meh.
//VOREStation Add - They don't like being pulled. This is going to fuck with slimesky, but meh. //Screw you. Just screw you and your 'meh'
/mob/living/bot/secbot/Life()
..()
if(health > 0 && on && pulledby)
if(isliving(pulledby))
var/mob/living/L = pulledby
UnarmedAttack(L)
say("Do not interfere with active law enforcement routines!")
global_announcer.autosay("[src] was interfered with in <b>[get_area(src)]</b>, activating defense routines.", "[src]", "Security")
var/pull_allowed = FALSE
for(var/A in req_one_access)
if(A in pulledby.GetAccess())
pull_allowed = TRUE
if(!pull_allowed)
var/mob/living/L = pulledby
UnarmedAttack(L)
say("Do not interfere with active law enforcement routines!")
global_announcer.autosay("[src] was interfered with in <b>[get_area(src)]</b>, activating defense routines.", "[src]", "Security")
//VOREStation Add End
/mob/living/bot/secbot/beepsky
name = "Officer Beepsky"

View File

@@ -1,6 +1,6 @@
/mob/living/verb/customsay()
set category = "IC"
set name = "Customise Say Verbs"
set name = "Customise Speech Verbs"
set desc = "Customise the text which appears when you type- e.g. 'says', 'asks', 'exclaims'."
if(src.client)
@@ -22,4 +22,4 @@
else if(sayselect == "Exclaim/Shout/Yell (!)")
custom_exclaim = sanitize(input(usr, "This word or phrase will appear instead of 'exclaims', 'shouts' or 'yells': [src] exclaims, \"Hi!\"", "Custom Exclaim", null) as text)
else
return
return

View File

@@ -27,7 +27,7 @@
for(var/borgie in GLOB.available_ai_shells)
var/mob/living/silicon/robot/R = borgie
if(R.shell && !R.deployed && (R.stat != DEAD) && (!R.connected_ai || (R.connected_ai == src) ) )
if(R.shell && !R.deployed && (R.stat != DEAD) && (!R.connected_ai || (R.connected_ai == src) ) && !(using_map.ai_shell_restricted && !(R.z in using_map.ai_shell_allowed_levels)) ) //VOREStation Edit: shell restrictions
possible += R
if(!LAZYLEN(possible))

View File

@@ -259,11 +259,16 @@
if(module)
return
var/list/modules = list()
modules.Add(robot_module_types)
if(crisis || security_level == SEC_LEVEL_RED || crisis_override) // VOREStation Edit
to_chat(src, "<font color='red'>Crisis mode active. Combat module available.</font>")
modules+="Combat"
modules+="ERT" //VOREStation Edit
//VOREStatation Edit Start: shell restrictions
if(shell)
modules.Add(shell_module_types)
else
modules.Add(robot_module_types)
if(crisis || security_level == SEC_LEVEL_RED || crisis_override)
to_chat(src, "<font color='red'>Crisis mode active. Combat module available.</font>")
modules+="Combat"
modules+="ERT"
//VOREStatation Edit End: shell restrictions
modtype = input("Please, select a module!", "Robot module", null, null) as null|anything in modules
if(module)

View File

@@ -48,6 +48,8 @@ var/global/list/robot_modules = list(
apply_status_flags(R)
if(R.radio)
if(R.shell)
channels = R.mainframe.aiRadio.channels
R.radio.recalculateChannels()
vr_add_sprites() //Vorestation Edit: For vorestation only sprites

View File

@@ -69,11 +69,14 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
// Languages and comms.
languages = AI.languages.Copy()
speech_synthesizer_langs = AI.speech_synthesizer_langs.Copy()
if(radio && AI.aiRadio) //AI keeps all channels, including Syndie if it is an Infiltrator.
//VOREStation Edit Start
if(radio && AI.aiRadio && module) //AI keeps all channels, including Syndie if it is an Infiltrator.
// if(AI.radio.syndie)
// radio.make_syndie()
radio.subspace_transmission = TRUE
radio.channels = AI.aiRadio.channels
module.channels = AI.aiRadio.channels
radio.recalculateChannels()
//VOREStation Edit End
// Called after the AI transfers over.
/mob/living/silicon/robot/proc/post_deploy()
@@ -94,7 +97,8 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
mainframe.deployed_shell = null
SetName("[modtype] AI Shell [num2text(ident)]")
// undeployment_action.Remove(src)
if(radio) //Return radio to normal
if(radio && module) //Return radio to normal //VOREStation Edit
module.channels = initial(module.channels) //VOREStation Edit
radio.recalculateChannels()
if(!QDELETED(camera))
camera.c_tag = real_name //update the camera name too

View File

@@ -258,3 +258,10 @@
return
if(buckle_mob(M))
visible_message("<span class='notice'>[M] starts riding [name]!</span>")
/mob/living/silicon/robot/onTransitZ(old_z, new_z)
if(shell)
if(deployed && using_map.ai_shell_restricted && !(new_z in using_map.ai_shell_allowed_levels))
to_chat(src,"<span class='warning'>Your connection with the shell is suddenly interrupted!</span>")
undeploy()
..()

View File

@@ -87,7 +87,7 @@
/mob/living/simple_mob/hostile/hivebot/range/ion
name = "engineering hivebot"
desc = "A robot. It has a tool which emits focused electromagnetic pulses, which are deadly to synthetic adverseries."
projectiletype = /obj/item/projectile/ion/small //VOREStation Edit
projectiletype = /obj/item/projectile/ion/pistol //VOREStation Edit
projectilesound = 'sound/weapons/Laser.ogg'
icon_living = "engi"
ranged = TRUE

View File

@@ -5,5 +5,9 @@
/mob/living/simple_mob/humanoid/merc/melee/sword/space
name = "mercenary commando"
maxbodytemp = 700
/mob/living/simple_mob/humanoid/merc/ranged/space
name = "mercenary commando"
name = "mercenary commando"
maxbodytemp = 700

View File

@@ -140,6 +140,13 @@
if(L.getCloneLoss() >= L.getMaxHealth() * 1.5)
to_chat(src, "This subject does not have an edible life energy...")
return FALSE
//VOREStation Addition start
if(istype(L, /mob/living/carbon/human))
var/mob/living/carbon/human/H = L
if(H.species.flags & NO_SCAN)
to_chat(src, "This subject's life energy is beyond my reach...")
return FALSE
//VOREStation Addition end
if(L.has_buckled_mobs())
for(var/A in L.buckled_mobs)
if(istype(A, /mob/living/simple_mob/slime/xenobio))

View File

@@ -1,2 +1,6 @@
/mob/living/simple_mob/slime/xenobio/rainbow/kendrick
mob_bump_flag = 0
/mob/living/simple_mob/slime/xenobio
mob_bump_flag = 0
/mob/living/simple_mob/slime/xenobio/Initialize(mapload, var/mob/living/simple_mob/slime/xenobio/my_predecessor)
..()
Weaken(10)

View File

@@ -58,7 +58,7 @@
desc = "A rectangular steel crate."
icon_state = "crate"
icon_living = "crate"
icon = 'icons/obj/storage.dmi'
icon = 'icons/obj/storage_vr.dmi'
faction = "mimic"

View File

@@ -121,7 +121,7 @@
health = 80 // Increase health to compensate
maxHealth = 80
*/
/*
/mob/living/simple_mob/animal/space/mimic
vore_active = 1
// NO VORE SPRITES
@@ -130,7 +130,7 @@
// Overrides to non-vore version
maxHealth = 60
health = 60
*/
/mob/living/simple_mob/animal/passive/cat
vore_active = 1
// NO VORE SPRITES

View File

@@ -0,0 +1,38 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
# Your name.
author: Heroman3003
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- tweak: "Desk bells can now be picked up like normal items."
- tweak: "Desk bells can now be deconstructed with a wrench while on the ground."
- tweak: "Desk bells can now only be made out of steel."

View File

@@ -150,6 +150,23 @@
list("Debris Field - Z1 Space")
)
ai_shell_restricted = TRUE
ai_shell_allowed_levels = list(
Z_LEVEL_SURFACE_LOW,
Z_LEVEL_SURFACE_MID,
Z_LEVEL_SURFACE_HIGH,
Z_LEVEL_TRANSIT,
Z_LEVEL_SPACE_LOW,
Z_LEVEL_SPACE_MID,
Z_LEVEL_SPACE_HIGH,
Z_LEVEL_SURFACE_MINE,
Z_LEVEL_SOLARS,
Z_LEVEL_CENTCOM,
Z_LEVEL_MISC,
Z_LEVEL_SHIPS,
Z_LEVEL_BEACH
)
lateload_single_pick = null //Nothing right now.
/datum/map/tether/perform_map_generation()

View File

@@ -59,6 +59,8 @@ var/list/all_maps = list()
var/list/holomap_legend_x = list()
var/list/holomap_legend_y = list()
var/list/meteor_strike_areas // VOREStation Edit - Areas meteor strikes may choose to hit.
var/ai_shell_restricted = FALSE //VOREStation Addition - are there z-levels restricted?
var/ai_shell_allowed_levels = list() //VOREStation Addition - which z-levels ARE we allowed to visit?
var/station_name = "BAD Station"
var/station_short = "Baddy"