mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
38
html/changelogs/Heroman3003 - bellfixes.yml
Normal file
38
html/changelogs/Heroman3003 - bellfixes.yml
Normal 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."
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user