mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-24 05:36:57 +01:00
Still more simple_mob conversions (#5523)
* Fixes 6 pAI faces PAIs are no longer coded to only recognize 9 emotions. This enables the use of the neutral, silly, nose, smirk, exclamation points, and question mark faces as a pAI. Before, those buttons did nothing. * Fixes the PDA Halogen Scanner's tendency to be number one. * Unfolded pAIs can be picked up Because who doesn't want a robotic cat on their head? Adds in the missing code to allow pAIs to actually be picked up, and held sprites for the newer 4 chassis options. * Adds the Gigaphone, a suped-up Megaphone. * Constant Chip has a sprite * Fireaxe cabinets find their fireaxes in initialize(), rather than new() * Speeds up alcohol * fixed mining cloak not being in loadouts * Admin Supermatter Setup now closes the monitoring room shutters (#5442) * Admin Supermatter Setup now closes the monitoring room shutters * Fixes a copy-paste error * Begins work on lightning. * Fixes #5447 (Deadspy submap not overwriting mapgen) (#5448) * Map fix * fixed deadspy.dmm * Added Squid plushies of varying colours I added a few Squid plushies in different colours, changing the files code/game/objects/items/toys.dm and obj/toy.dmi * Added hat functionality to Squid plushies I added the ability to wear my Squid plushies as hats. They're damn good hats. * Replaces Skrell namegen (#5453) Created a first name list for Skrell, to replace the syllable assembler. Created a surname list for Skrell to replace the syllable assembler. Replaced the Skrell namegen with pre-written namelists, instead of the old syllable assembler. * Mechoid makes mistakes. Fix telepathic gigaphones. * Lets people be colorblind Adds four types of colorblindness to the traits in the setup menu - protanopia, deuteranopia, tritanopia, and monochromacy. Previously, there were ones defined in the code, but not actually usable to players. * Whoops, worded that wrong * Adds beams to the Type var list for View Variables. * Unfuck my Master * Adds beams to the Type var selection in View Variables. * Finishes thunderstorms. * Adds logging. * APC Sprite Change - Port from Virgo recolored slightly to match closer to the old sprite - Addition of directional sprites for the APCs * Refactors supply controller. Supply consoles now run nanoUI * Missing ' * [Excitedly updates changelog] * btw i use arc * Removes supermatters from cave PoIs. * Holomap Port - Port of Holomaps from Virgo * Changing species (via ling or admin button) should no longer ruin your HUD * Converts most istype(thing,tool) procs into an appropriate thing.is_tool() format * Removes empty file, gives the QM a control console again (Was replaced with an ordering console) * Hopefully fixes some tool-conversion things * Makes the Northern Star still compile * Keeps NS up to date * Taj and Unathi should have explorer mask sprites now * Corgi rune now summons the corgi in a flash of harmless lightning * Forces mech construction to work with the is_tool() procs * Various things and floors no longer associate with dirt * MultiZ falling tweaks * Fixes the clusterbang grenade * Added new hairstyles * Added new hairstyles * Fixes spelling of Strike in Lightning Strike admin verb * I don't know how we keep breaking falling * Hallucinations now use the old system again, but with the more modern components. * Ambience Refactor (#5476) * Refactors how ambience is assigned, removes bad ambience, ports good ambience from tg * Apparently that file is still used, not worth the salt to remove it. * Changelog * The speed-related chem effects are no longer a one-or-none affair, oxy causes slowdown * Corrects noted issues * Add some missing sprites for xenoarch excavation. * Become thwarted, thot. * Fixes the Ultra AC2's burstfire bug. * The Major Bill's shuttle is actually contagious now. * penguins are from earth capitalize this, anewbe, i dare you * Mechoid's a butt * Adds new job/department specific teshari clothing to the loadout (#5481) * adding the new department specific teshari outfits * Slightly cleans up hooded suit code (#5471) * FBPs can have brute damage repaired externally again * Windoors fix * Cleans up some largecrate code * Weather refactor. * NanoUI makes me sad. * Drinking more booze gets you drunk faster * Ports the supermatter grenade, supporting code * May or may not make movement seem smoother * Fixes the Sleepy Ring * Partially ports the GLOB system * Fixes the bug(s) that allow meat bodies to have metal brains * ports VOREStation/VOREStation#4165 - i forgot to check if advanced who was a thing here * Optimizes supply UI * Transfer shuttle grammar fixes * Fixes borked E and W fish sprites * Fixes incorrect ETA in crew transfer announcement * Mech Mini 'Revamp'. Will need playtesting. (#5480) * Exosuits are now capable of holding more equipment, of specific types. * Tweaks regarding feedback in staffside thread, other concerns. * Tweak to be more consistent. Why did the Odysseus have two universals. Tweak to weapon restriction on Med - > Odyss * Weapons only fit in universal combat slots. * Adds smart magazine, magazine functionality * Adds a new subset of grenades that shoot projectiles * Low alpha now makes HUDs and tooltips not show up on you * Fixes a UI bug with emptying currently-open bags into smartfridges...hopefully. (#5515) * Update smartfridge.dm * actually indicates which line solves the bug * Adds a whole bunch of Exosuit weapons and other miscellaneous parts. * Minifrags now use the small fragments mainly as they should. * Iced beer no longer freezes you to 3 degrees C, which is enough to seriously burn a Skrell. Seriously, that's weird. * Touch stuff in reference to responses. * NanoUI now processes again * Converts more simple_animal mobs to simple_mob * Submap correction
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
sparks.attach(loc)
|
||||
|
||||
/obj/item/weapon/antag_spawner/Destroy()
|
||||
qdel_null(sparks)
|
||||
QDEL_NULL(sparks)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/antag_spawner/proc/spawn_antag(client/C, turf/T)
|
||||
|
||||
@@ -149,8 +149,8 @@
|
||||
..()
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/Destroy()
|
||||
qdel_null(syringe)
|
||||
qdel_null(tank)
|
||||
QDEL_NULL(syringe)
|
||||
QDEL_NULL(tank)
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/open()
|
||||
|
||||
@@ -467,7 +467,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
/obj/item/device/pda/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
ui_tick++
|
||||
var/datum/nanoui/old_ui = nanomanager.get_open_ui(user, src, "main")
|
||||
var/datum/nanoui/old_ui = GLOB.nanomanager.get_open_ui(user, src, "main")
|
||||
var/auto_update = 1
|
||||
if(mode in no_auto_update)
|
||||
auto_update = 0
|
||||
@@ -647,7 +647,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
nanoUI = data
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
|
||||
if (!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
@@ -684,7 +684,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
..()
|
||||
var/mob/user = usr
|
||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||
var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main")
|
||||
var/mob/living/U = usr
|
||||
//Looking for master was kind of pointless since PDAs don't appear to have one.
|
||||
//if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ) )
|
||||
@@ -1129,7 +1129,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
ai.show_message("<i>Intercepted message from <b>[who]</b>: [t]</i>")
|
||||
|
||||
P.new_message_from_pda(src, t)
|
||||
nanomanager.update_user_uis(U, src) // Update the sending user's PDA UI so that they can see the new message
|
||||
GLOB.nanomanager.update_user_uis(U, src) // Update the sending user's PDA UI so that they can see the new message
|
||||
else
|
||||
to_chat(U, "<span class='notice'>ERROR: Messaging server is not responding.</span>")
|
||||
|
||||
@@ -1149,7 +1149,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(L)
|
||||
if(reception_message)
|
||||
L << reception_message
|
||||
nanomanager.update_user_uis(L, src) // Update the receiving user's PDA UI so that they can see the new message
|
||||
GLOB.nanomanager.update_user_uis(L, src) // Update the receiving user's PDA UI so that they can see the new message
|
||||
|
||||
/obj/item/device/pda/proc/new_news(var/message)
|
||||
new_info(news_silent, newstone, news_silent ? "" : "\icon[src] <b>[message]</b>")
|
||||
@@ -1195,7 +1195,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
if(can_use(usr))
|
||||
mode = 0
|
||||
nanomanager.update_uis(src)
|
||||
GLOB.nanomanager.update_uis(src)
|
||||
to_chat(usr, "<span class='notice'>You press the reset button on \the [src].</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You cannot do this while restrained.</span>")
|
||||
@@ -1296,7 +1296,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
user.drop_item()
|
||||
cartridge.loc = src
|
||||
to_chat(usr, "<span class='notice'>You insert [cartridge] into [src].</span>")
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
GLOB.nanomanager.update_uis(src) // update all UIs attached to src
|
||||
if(cartridge.radio)
|
||||
cartridge.radio.hostpda = src
|
||||
|
||||
@@ -1324,7 +1324,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
C.loc = src
|
||||
pai = C
|
||||
to_chat(user, "<span class='notice'>You slot \the [C] into \the [src].</span>")
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
GLOB.nanomanager.update_uis(src) // update all UIs attached to src
|
||||
else if(istype(C, /obj/item/weapon/pen))
|
||||
var/obj/item/weapon/pen/O = locate() in src
|
||||
if(O)
|
||||
@@ -1473,9 +1473,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if (src.id && prob(90)) //IDs are kept in 90% of the cases
|
||||
src.id.forceMove(get_turf(src.loc))
|
||||
else
|
||||
qdel_null(src.id)
|
||||
qdel_null(src.cartridge)
|
||||
qdel_null(src.pai)
|
||||
QDEL_NULL(src.id)
|
||||
QDEL_NULL(src.cartridge)
|
||||
QDEL_NULL(src.pai)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery.
|
||||
|
||||
@@ -79,7 +79,7 @@ var/list/civilian_cartridges = list(
|
||||
var/list/stored_data = list()
|
||||
|
||||
/obj/item/weapon/cartridge/Destroy()
|
||||
qdel_null(radio)
|
||||
QDEL_NULL(radio)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/cartridge/engineering
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
data["laws"] = laws
|
||||
data["has_laws"] = laws.len
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "aicard.tmpl", "[name]", 600, 400, state = state)
|
||||
ui.set_initial_data(data)
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
data["injection"] = injection
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if(!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
@@ -250,5 +250,5 @@
|
||||
fon = !fon
|
||||
set_light(fon * flum)
|
||||
|
||||
nanomanager.update_uis(src)
|
||||
GLOB.nanomanager.update_uis(src)
|
||||
add_fingerprint(usr)
|
||||
|
||||
@@ -298,8 +298,8 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
all_communicators -= src
|
||||
processing_objects -= src
|
||||
listening_objects.Remove(src)
|
||||
qdel_null(camera)
|
||||
qdel_null(exonet)
|
||||
QDEL_NULL(camera)
|
||||
QDEL_NULL(exonet)
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
|
||||
/obj/item/device/defib_kit/Destroy()
|
||||
. = ..()
|
||||
qdel_null(paddles)
|
||||
qdel_null(bcell)
|
||||
QDEL_NULL(paddles)
|
||||
QDEL_NULL(bcell)
|
||||
|
||||
/obj/item/device/defib_kit/loaded //starts with a cell
|
||||
bcell = /obj/item/weapon/cell/apc
|
||||
|
||||
@@ -30,7 +30,7 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard)
|
||||
//Will stop people throwing friend pAIs into the singularity so they can respawn
|
||||
if(!isnull(pai))
|
||||
pai.death(0)
|
||||
qdel_null(radio)
|
||||
QDEL_NULL(radio)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/paicard/attack_self(mob/user)
|
||||
|
||||
@@ -35,7 +35,7 @@ var/global/list/active_radio_jammers = list()
|
||||
/obj/item/device/radio_jammer/Destroy()
|
||||
if(on)
|
||||
turn_off()
|
||||
qdel_null(power_source)
|
||||
QDEL_NULL(power_source)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/radio_jammer/get_cell()
|
||||
|
||||
@@ -119,7 +119,7 @@ var/global/list/default_medbay_channels = list(
|
||||
if(syndie)
|
||||
data["useSyndMode"] = 1
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "radio_basic.tmpl", "[name]", 400, 430)
|
||||
ui.set_initial_data(data)
|
||||
@@ -230,7 +230,7 @@ var/global/list/default_medbay_channels = list(
|
||||
return 1
|
||||
|
||||
if(.)
|
||||
nanomanager.update_uis(src)
|
||||
GLOB.nanomanager.update_uis(src)
|
||||
|
||||
/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel) //BS12 EDIT
|
||||
var/datum/radio_frequency/connection = null
|
||||
@@ -714,7 +714,7 @@ var/global/list/default_medbay_channels = list(
|
||||
. = 1
|
||||
|
||||
if(.)
|
||||
nanomanager.update_uis(src)
|
||||
GLOB.nanomanager.update_uis(src)
|
||||
|
||||
/obj/item/device/radio/borg/interact(mob/user as mob)
|
||||
if(!on)
|
||||
@@ -743,7 +743,7 @@ var/global/list/default_medbay_channels = list(
|
||||
data["has_subspace"] = 1
|
||||
data["subspace"] = subspace_transmission
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "radio_basic.tmpl", "[name]", 400, 430)
|
||||
ui.set_initial_data(data)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
log_game("[key_name_admin(user)] attached both tanks to a transfer valve.")
|
||||
|
||||
update_icon()
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
GLOB.nanomanager.update_uis(src) // update all UIs attached to src
|
||||
//TODO: Have this take an assemblyholder
|
||||
else if(isassembly(item))
|
||||
var/obj/item/device/assembly/A = item
|
||||
@@ -58,7 +58,7 @@
|
||||
message_admins("[key_name_admin(user)] attached a [item] to a transfer valve. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>JMP</a>)")
|
||||
log_game("[key_name_admin(user)] attached a [item] to a transfer valve.")
|
||||
attacher = user
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
GLOB.nanomanager.update_uis(src) // update all UIs attached to src
|
||||
return
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
data["valveOpen"] = valve_open ? 1 : 0
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
@@ -150,7 +150,7 @@
|
||||
tank_two = null
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
T.loc = get_turf(src)
|
||||
update_icon()
|
||||
|
||||
@@ -166,18 +166,18 @@
|
||||
/obj/item/device/transfer_valve/proc/split_gases()
|
||||
if(!valve_open)
|
||||
return
|
||||
|
||||
|
||||
valve_open = 0
|
||||
|
||||
if(QDELETED(tank_one) || QDELETED(tank_two))
|
||||
|
||||
if(QDELETED(tank_one) || QDELETED(tank_two))
|
||||
return
|
||||
|
||||
|
||||
var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume
|
||||
var/datum/gas_mixture/temp
|
||||
temp = tank_two.air_contents.remove_ratio(ratio1)
|
||||
tank_one.air_contents.merge(temp)
|
||||
tank_two.air_contents.volume -= tank_one.air_contents.volume
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Exadv1: I know this isn't how it's going to work, but this was just to check
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
discount_amount = pick(90;0.9, 80;0.8, 70;0.7, 60;0.6, 50;0.5, 40;0.4, 30;0.3, 20;0.2, 10;0.1)
|
||||
next_offer_time = world.time + offer_time
|
||||
update_nano_data()
|
||||
nanomanager.update_uis(src)
|
||||
GLOB.nanomanager.update_uis(src)
|
||||
|
||||
// Toggles the uplink on and off. Normally this will bypass the item's normal functions and go to the uplink menu, if activated.
|
||||
/obj/item/device/uplink/hidden/proc/toggle()
|
||||
@@ -110,7 +110,7 @@
|
||||
data += nanoui_data
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui) // No auto-refresh
|
||||
ui = new(user, src, ui_key, "uplink.tmpl", title, 450, 600, state = inventory_state)
|
||||
data["menu"] = 0
|
||||
@@ -138,7 +138,7 @@
|
||||
UI.buy(src, usr)
|
||||
else if(href_list["lock"])
|
||||
toggle()
|
||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||
var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main")
|
||||
ui.close()
|
||||
else if(href_list["return"])
|
||||
nanoui_menu = round(nanoui_menu/10)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
w_class = ITEMSIZE_SMALL
|
||||
matter = list("glass" = 200)
|
||||
flags = NOBLUDGEON
|
||||
var/list/accept_mobs = list(/mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_animal/mouse)
|
||||
var/list/accept_mobs = list(/mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_mob/animal/passive/mouse)
|
||||
var/contains = 0 // 0 = nothing, 1 = money, 2 = animal, 3 = spiderling
|
||||
|
||||
/obj/item/glass_jar/New()
|
||||
|
||||
@@ -27,9 +27,9 @@
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/Destroy()
|
||||
qdel_null(weldtool)
|
||||
qdel_null(igniter)
|
||||
qdel_null(ptank)
|
||||
QDEL_NULL(weldtool)
|
||||
QDEL_NULL(igniter)
|
||||
QDEL_NULL(ptank)
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/flamethrower/process()
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
create_reagents(1000)
|
||||
|
||||
Destroy()
|
||||
qdel_null(detonator)
|
||||
qdel_null_list(beakers)
|
||||
QDEL_NULL(detonator)
|
||||
QDEL_NULL_LIST(beakers)
|
||||
return ..()
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
//Concussion, or 'dizzyness' grenades.
|
||||
|
||||
/obj/item/weapon/grenade/concussion
|
||||
name = "concussion grenade"
|
||||
desc = "A polymer concussion grenade, optimized for disorienting personnel without causing large amounts of injury."
|
||||
icon_state = "concussion"
|
||||
item_state = "grenade"
|
||||
|
||||
var/blast_radius = 5
|
||||
|
||||
/obj/item/weapon/grenade/concussion/detonate()
|
||||
..()
|
||||
concussion_blast(get_turf(src), blast_radius)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/proc/concussion_blast(atom/target, var/radius = 5)
|
||||
var/turf/T = get_turf(target)
|
||||
if(is_below_sound_pressure(T))
|
||||
visible_message("<span class='notice'>Whump.</span>")
|
||||
return
|
||||
playsound(src.loc, 'sound/effects/bang.ogg', 75, 1, -3)
|
||||
if(istype(T))
|
||||
for(var/mob/living/L in orange(T, radius))
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
to_chat(H, "<span class='critical'>WHUMP.</span>")
|
||||
|
||||
var/ear_safety = 0
|
||||
|
||||
H.get_ear_protection()
|
||||
|
||||
var/bang_effectiveness = H.species.sound_mod
|
||||
|
||||
if((get_dist(H, T) <= round(radius * 0.3 * bang_effectiveness) || src.loc == H.loc || src.loc == H))
|
||||
if(ear_safety > 0)
|
||||
H.Confuse(2)
|
||||
else
|
||||
H.Confuse(8)
|
||||
H.Weaken(1)
|
||||
if ((prob(14) || (H == src.loc && prob(70))))
|
||||
H.ear_damage += rand(1, 10)
|
||||
else
|
||||
H.ear_damage += rand(0, 5)
|
||||
H.ear_deaf = max(H.ear_deaf,15)
|
||||
if(H.client)
|
||||
if(prob(50))
|
||||
H.client.spinleft()
|
||||
else
|
||||
H.client.spinright()
|
||||
|
||||
else if(get_dist(H, T) <= round(radius * 0.5 * bang_effectiveness))
|
||||
if(!ear_safety)
|
||||
H.Confuse(6)
|
||||
H.ear_damage += rand(0, 3)
|
||||
H.ear_deaf = max(H.ear_deaf,10)
|
||||
|
||||
if(H.client)
|
||||
if(prob(50))
|
||||
H.client.spinleft()
|
||||
else
|
||||
H.client.spinright()
|
||||
|
||||
else if(!ear_safety && get_dist(H, T) <= (radius * bang_effectiveness))
|
||||
H.Confuse(4)
|
||||
H.ear_damage += rand(0, 1)
|
||||
H.ear_deaf = max(H.ear_deaf,5)
|
||||
|
||||
if(H.ear_damage >= 15)
|
||||
to_chat(H, "<span class='danger'>Your ears start to ring badly!</span>")
|
||||
|
||||
if(prob(H.ear_damage - 5))
|
||||
to_chat(H, "<span class='danger'>You can't hear anything!</span>")
|
||||
H.sdisabilities |= DEAF
|
||||
else if(H.ear_damage >= 5)
|
||||
to_chat(H, "<span class='danger'>Your ears start to ring!</span>")
|
||||
if(istype(L, /mob/living/silicon/robot))
|
||||
var/mob/living/silicon/robot/R = L
|
||||
if(L.client)
|
||||
if(prob(50))
|
||||
L.client.spinleft()
|
||||
else
|
||||
L.client.spinright()
|
||||
to_chat(R, "<span class='critical'>Gyroscopic failure.</span>")
|
||||
return
|
||||
@@ -1,35 +1,3 @@
|
||||
//obj/item/weapon/grenade/explosive
|
||||
//desc = "A fragmentation grenade, optimized for harming personnel without causing massive structural damage."
|
||||
//name = "frag grenade"
|
||||
//icon = 'icons/obj/grenade.dmi'
|
||||
//det_time = 50
|
||||
//icon_state = "frggrenade"
|
||||
//origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 3)
|
||||
|
||||
//obj/item/weapon/grenade/explosive/prime()
|
||||
// ..()
|
||||
//spawn(0)
|
||||
//explosion(src.loc,-1,-1,2) //If you're within two tiles of the grenade, you get hit twice, which tends to do 50+ brute and cause fractures.
|
||||
//explosion(src.loc,-1,-1,3) //This is preferable to increasing the severity, so we don't decap with frags.
|
||||
//qdel(src)
|
||||
//return
|
||||
|
||||
//Explosive grenade projectile, borrowed from fragmentation grenade code.
|
||||
/obj/item/projectile/bullet/pellet/fragment
|
||||
damage = 10
|
||||
armor_penetration = 30
|
||||
range_step = 2 //projectiles lose a fragment each time they travel this distance. Can be a non-integer.
|
||||
|
||||
base_spread = 0 //causes it to be treated as a shrapnel explosion instead of cone
|
||||
spread_step = 20
|
||||
|
||||
silenced = 1 //embedding messages are still produced so it's kind of weird when enabled.
|
||||
no_attack_log = 1
|
||||
muzzle_type = null
|
||||
|
||||
/obj/item/projectile/bullet/pellet/fragment/strong
|
||||
damage = 15
|
||||
armor_penetration = 20
|
||||
|
||||
/obj/item/weapon/grenade/explosive
|
||||
name = "fragmentation grenade"
|
||||
@@ -53,11 +21,40 @@
|
||||
|
||||
if(explosion_size)
|
||||
on_explosion(O)
|
||||
if(num_fragments)
|
||||
fragmentate(O, num_fragments, spread_range, fragment_types)
|
||||
src.fragmentate(O, num_fragments, spread_range, fragment_types)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/explosive/proc/on_explosion(var/turf/O)
|
||||
if(explosion_size)
|
||||
explosion(O, -1, -1, explosion_size, round(explosion_size/2), 0)
|
||||
|
||||
// Waaaaay more pellets
|
||||
/obj/item/weapon/grenade/explosive/frag
|
||||
name = "fragmentation grenade"
|
||||
desc = "A military fragmentation grenade, designed to explode in a deadly shower of fragments."
|
||||
icon_state = "frag"
|
||||
loadable = null
|
||||
|
||||
fragment_types = list(/obj/item/projectile/bullet/pellet/fragment)
|
||||
num_fragments = 200 //total number of fragments produced by the grenade
|
||||
|
||||
/obj/item/weapon/grenade/explosive/mini
|
||||
name = "mini fragmentation grenade"
|
||||
desc = "A miniaturized fragmentation grenade, this one poses relatively little threat on its own."
|
||||
icon_state = "minifrag"
|
||||
fragment_types = list(/obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong)
|
||||
num_fragments = 20
|
||||
spread_range = 3
|
||||
explosion_size = 1
|
||||
|
||||
// This thing literally just explodes
|
||||
/obj/item/weapon/grenade/explosive/concussion
|
||||
name = "concussion grenade"
|
||||
desc = "A small explosive grenade"
|
||||
num_fragments = 0
|
||||
|
||||
|
||||
// This proc is only here because I don't know where else to put it, should be kept at the bottom of this file unless moved to a more appropriate location
|
||||
/obj/proc/fragmentate(var/turf/T=get_turf(src), var/fragment_number = 30, var/spreading_range = 5, var/list/fragtypes=list(/obj/item/projectile/bullet/pellet/fragment/))
|
||||
set waitfor = 0
|
||||
var/list/target_turfs = getcircle(T, spreading_range)
|
||||
@@ -82,26 +79,3 @@
|
||||
P.attack_mob(M, 0, 25) //you're holding a grenade, dude!
|
||||
else
|
||||
P.attack_mob(M, 0, 100) //otherwise, allow a decent amount of fragments to pass
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/explosive/proc/on_explosion(var/turf/O)
|
||||
if(explosion_size)
|
||||
explosion(O, -1, -1, explosion_size, round(explosion_size/2), 0)
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/explosive/frag
|
||||
name = "fragmentation grenade"
|
||||
desc = "A military fragmentation grenade, designed to explode in a deadly shower of fragments."
|
||||
icon_state = "frag"
|
||||
loadable = null
|
||||
|
||||
fragment_types = list(/obj/item/projectile/bullet/pellet/fragment)
|
||||
num_fragments = 200 //total number of fragments produced by the grenade
|
||||
|
||||
//The radius of the circle used to launch projectiles. Lower values mean less projectiles are used but if set too low gaps may appear in the spread pattern
|
||||
|
||||
// This thing literally just explodes
|
||||
/obj/item/weapon/grenade/explosive/concussion
|
||||
name = "concussion grenade"
|
||||
desc = "A small explosive grenade"
|
||||
num_fragments = 0
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
var/active = 0
|
||||
var/det_time = 50
|
||||
var/loadable = 1
|
||||
var/loadable = TRUE
|
||||
var/arm_sound = 'sound/weapons/armbomb.ogg'
|
||||
|
||||
/obj/item/weapon/grenade/proc/clown_check(var/mob/living/user)
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
/obj/item/weapon/grenade/shooter
|
||||
name = "projectile grenade" // I have no idea what else to call this, but the base type should never be used
|
||||
icon_state = "frggrenade"
|
||||
item_state = "grenade"
|
||||
|
||||
var/list/projectile_types = list(/obj/item/projectile/bullet/pistol/rubber) // What sorts of projectiles might we make?
|
||||
|
||||
//The radius of the circle used to launch projectiles. Lower values mean less projectiles are used but if set too low gaps may appear in the spread pattern
|
||||
var/spread_range = 7
|
||||
|
||||
loadable = FALSE
|
||||
|
||||
/obj/item/weapon/grenade/shooter/detonate()
|
||||
..()
|
||||
|
||||
var/turf/O = get_turf(src)
|
||||
if(!O)
|
||||
return
|
||||
|
||||
src.launch_many_projectiles(O, spread_range, projectile_types)
|
||||
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/shooter/rubber
|
||||
name = "rubber pellet grenade"
|
||||
desc = "An anti-riot grenade that fires a cloud of rubber projectiles upon detonation."
|
||||
projectile_types = list(/obj/item/projectile/bullet/pistol/rubber)
|
||||
|
||||
// Exists mostly so I don't have to copy+paste the sprite vars to a billion things
|
||||
/obj/item/weapon/grenade/shooter/energy
|
||||
icon_state = "flashbang"
|
||||
item_state = "flashbang"
|
||||
spread_range = 3 // Because dear god
|
||||
|
||||
/obj/item/weapon/grenade/shooter/energy/laser
|
||||
name = "laser grenade"
|
||||
desc = "A horrifically dangerous rave in a can."
|
||||
projectile_types = list(/obj/item/projectile/beam/midlaser)
|
||||
|
||||
/obj/item/weapon/grenade/shooter/energy/flash
|
||||
name = "flash grenade"
|
||||
desc = "A grenade that creates a large number of flashes upon detonation."
|
||||
projectile_types = list(/obj/item/projectile/energy/flash)
|
||||
|
||||
/obj/item/weapon/grenade/shooter/energy/tesla
|
||||
name = "tesla grenade"
|
||||
projectile_types = list(/obj/item/projectile/beam/chain_lightning/lesser)
|
||||
|
||||
|
||||
// This is just fragmentate, but less specific. Don't know how to make either of them less awful, at the moment
|
||||
/obj/proc/launch_many_projectiles(var/turf/T=get_turf(src), var/spreading_range = 5, var/list/projectiletypes=list(/obj/item/projectile/bullet/pistol/rubber))
|
||||
set waitfor = 0
|
||||
var/list/target_turfs = getcircle(T, spreading_range)
|
||||
|
||||
for(var/turf/O in target_turfs)
|
||||
sleep(0)
|
||||
var/shot_type = pick(projectiletypes)
|
||||
|
||||
var/obj/item/projectile/P = new shot_type(T)
|
||||
P.shot_from = src.name
|
||||
|
||||
P.launch(O)
|
||||
|
||||
//Make sure to hit any mobs in the source turf
|
||||
for(var/mob/living/M in T)
|
||||
//lying on a frag grenade while the grenade is on the ground causes you to absorb most of the shrapnel.
|
||||
//you will most likely be dead, but others nearby will be spared the fragments that hit you instead.
|
||||
if(M.lying && isturf(src.loc))
|
||||
P.attack_mob(M, 0, 5)
|
||||
else if(!M.lying && src.loc != get_turf(src)) //if it's not on the turf, it must be in the mob!
|
||||
P.attack_mob(M, 0, 25) //you're holding a grenade, dude!
|
||||
else
|
||||
P.attack_mob(M, 0, 100) //otherwise, allow a decent amount of fragments to pass
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/spesscarp
|
||||
name = "carp delivery grenade"
|
||||
spawner_type = /mob/living/simple_animal/hostile/carp
|
||||
spawner_type = /mob/living/simple_mob/animal/space/carp
|
||||
deliveryamt = 5
|
||||
origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_ILLEGAL = 4)
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
data["electronic_warfare"] = electronic_warfare
|
||||
data["entries"] = entries
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "agent_id_card.tmpl", "Fake ID", 600, 400)
|
||||
ui.set_initial_data(data)
|
||||
@@ -185,7 +185,7 @@
|
||||
. = 1
|
||||
|
||||
// Always update the UI, or buttons will spin indefinitely
|
||||
nanomanager.update_uis(src)
|
||||
GLOB.nanomanager.update_uis(src)
|
||||
|
||||
/var/global/list/id_card_states
|
||||
/proc/id_card_states()
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
V.mechassist()
|
||||
for(var/L in need_amend)
|
||||
V.add_assistable_langs(L)
|
||||
qdel_null(src)
|
||||
QDEL_NULL(src)
|
||||
|
||||
/obj/item/weapon/implant/language/get_data()
|
||||
var/dat = {"
|
||||
|
||||
@@ -76,5 +76,5 @@
|
||||
G.epitaph = epitaph
|
||||
G.add_fingerprint(usr)
|
||||
G.dir = user.dir
|
||||
qdel_null(src)
|
||||
QDEL_NULL(src)
|
||||
return
|
||||
@@ -65,7 +65,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/laundry_basket/dropped(mob/user as mob)
|
||||
qdel_null(linked)
|
||||
QDEL_NULL(linked)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/laundry_basket/show_to(mob/user as mob)
|
||||
|
||||
@@ -40,14 +40,14 @@
|
||||
|
||||
/obj/item/weapon/storage/Destroy()
|
||||
close_all()
|
||||
qdel_null(boxes)
|
||||
qdel_null(src.storage_start)
|
||||
qdel_null(src.storage_continue)
|
||||
qdel_null(src.storage_end)
|
||||
qdel_null(src.stored_start)
|
||||
qdel_null(src.stored_continue)
|
||||
qdel_null(src.stored_end)
|
||||
qdel_null(closer)
|
||||
QDEL_NULL(boxes)
|
||||
QDEL_NULL(src.storage_start)
|
||||
QDEL_NULL(src.storage_continue)
|
||||
QDEL_NULL(src.storage_end)
|
||||
QDEL_NULL(src.stored_start)
|
||||
QDEL_NULL(src.stored_continue)
|
||||
QDEL_NULL(src.stored_end)
|
||||
QDEL_NULL(closer)
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/storage/MouseDrop(obj/over_object as obj)
|
||||
@@ -354,7 +354,7 @@
|
||||
//such as when picking up all the items on a tile with one click.
|
||||
/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
|
||||
if(!istype(W)) return 0
|
||||
|
||||
|
||||
if(usr)
|
||||
usr.remove_from_mob(W,target = src) //If given a target, handles forceMove()
|
||||
W.on_enter_storage(src)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
ion_trail.set_up(src)
|
||||
|
||||
/obj/item/weapon/tank/jetpack/Destroy()
|
||||
qdel_null(ion_trail)
|
||||
QDEL_NULL(ion_trail)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/tank/jetpack/examine(mob/user)
|
||||
|
||||
@@ -70,10 +70,10 @@ var/list/global/tank_gauge_cache = list()
|
||||
return
|
||||
|
||||
/obj/item/weapon/tank/Destroy()
|
||||
qdel_null(air_contents)
|
||||
QDEL_NULL(air_contents)
|
||||
|
||||
processing_objects.Remove(src)
|
||||
qdel_null(src.proxyassembly)
|
||||
QDEL_NULL(src.proxyassembly)
|
||||
|
||||
if(istype(loc, /obj/item/device/transfer_valve))
|
||||
var/obj/item/device/transfer_valve/TTV = loc
|
||||
@@ -264,7 +264,7 @@ var/list/global/tank_gauge_cache = list()
|
||||
data["maskConnected"] = 1
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
@@ -674,32 +674,3 @@ var/list/global/tank_gauge_cache = list()
|
||||
/obj/item/device/tankassemblyproxy/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(src.assembly)
|
||||
src.assembly.HasProximity(AM)
|
||||
|
||||
|
||||
/obj/item/projectile/bullet/pellet/fragment/tank
|
||||
name = "metal fragment"
|
||||
damage = 9 //Big chunks flying off.
|
||||
range_step = 2 //controls damage falloff with distance. projectiles lose a "pellet" each time they travel this distance. Can be a non-integer.
|
||||
|
||||
base_spread = 0 //causes it to be treated as a shrapnel explosion instead of cone
|
||||
spread_step = 20
|
||||
|
||||
armor_penetration = 20
|
||||
|
||||
silenced = 1
|
||||
no_attack_log = 1
|
||||
muzzle_type = null
|
||||
pellets = 3
|
||||
|
||||
/obj/item/projectile/bullet/pellet/fragment/tank/small
|
||||
name = "small metal fragment"
|
||||
damage = 6
|
||||
armor_penetration = 5
|
||||
pellets = 5
|
||||
|
||||
/obj/item/projectile/bullet/pellet/fragment/tank/big
|
||||
name = "large metal fragment"
|
||||
damage = 17
|
||||
armor_penetration = 10
|
||||
range_step = 5 //controls damage falloff with distance. projectiles lose a "pellet" each time they travel this distance. Can be a non-integer.
|
||||
pellets = 1
|
||||
@@ -65,7 +65,7 @@
|
||||
/obj/item/weapon/tool/crowbar/power/Destroy()
|
||||
if(counterpart)
|
||||
counterpart.counterpart = null // So it can qdel cleanly.
|
||||
qdel_null(counterpart)
|
||||
QDEL_NULL(counterpart)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/tool/crowbar/power/attack_self(mob/user)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
/*
|
||||
* Screwdriver
|
||||
*/
|
||||
@@ -113,7 +114,7 @@
|
||||
/obj/item/weapon/tool/screwdriver/power/Destroy()
|
||||
if(counterpart)
|
||||
counterpart.counterpart = null // So it can qdel cleanly.
|
||||
qdel_null(counterpart)
|
||||
QDEL_NULL(counterpart)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/tool/screwdriver/power/attack_self(mob/user)
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
/obj/item/weapon/tool/wirecutters/power/Destroy()
|
||||
if(counterpart)
|
||||
counterpart.counterpart = null // So it can qdel cleanly.
|
||||
qdel_null(counterpart)
|
||||
QDEL_NULL(counterpart)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/tool/wirecutters/power/attack_self(mob/user)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
/*
|
||||
* Wrench
|
||||
*/
|
||||
@@ -59,7 +60,7 @@
|
||||
/obj/item/weapon/tool/wrench/power/Destroy()
|
||||
if(counterpart)
|
||||
counterpart.counterpart = null // So it can qdel cleanly.
|
||||
qdel_null(counterpart)
|
||||
QDEL_NULL(counterpart)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/tool/wrench/power/attack_self(mob/user)
|
||||
|
||||
@@ -22,18 +22,18 @@
|
||||
prob(6);/mob/living/simple_mob/animal/sif/diyaab,
|
||||
prob(10);/mob/living/simple_animal/cat/fluff,
|
||||
prob(6);/mob/living/simple_animal/cat/kitten,
|
||||
prob(10);/mob/living/simple_animal/corgi,
|
||||
prob(6);/mob/living/simple_animal/corgi/puppy,
|
||||
prob(10);/mob/living/simple_mob/animal/passive/dog/corgi,
|
||||
prob(6);/mob/living/simple_mob/animal/passive/dog/corgi/puppy,
|
||||
prob(10);/mob/living/simple_mob/animal/passive/crab,
|
||||
prob(10);/mob/living/simple_animal/chicken,
|
||||
prob(6);/mob/living/simple_animal/chick,
|
||||
prob(10);/mob/living/simple_animal/cow,
|
||||
prob(6);/mob/living/simple_animal/retaliate/goat,
|
||||
prob(10);/mob/living/simple_mob/animal/passive/chicken,
|
||||
prob(6);/mob/living/simple_mob/animal/passive/chick,
|
||||
prob(10);/mob/living/simple_mob/animal/passive/cow,
|
||||
prob(6);/mob/living/simple_mob/goat,
|
||||
prob(10);/mob/living/simple_mob/animal/passive/penguin,
|
||||
prob(10);/mob/living/simple_animal/mouse,
|
||||
prob(10);/mob/living/simple_mob/animal/passive/mouse,
|
||||
prob(10);/mob/living/simple_mob/animal/passive/yithian,
|
||||
prob(10);/mob/living/simple_mob/animal/passive/tindalos,
|
||||
prob(10);/mob/living/simple_animal/corgi/tamaskan,
|
||||
prob(10);/mob/living/simple_mob/animal/passive/dog/tamaskan,
|
||||
prob(3);/mob/living/simple_animal/parrot,
|
||||
prob(1);/mob/living/simple_mob/animal/passive/crab)
|
||||
|
||||
@@ -68,10 +68,10 @@
|
||||
return pick(prob(30);/mob/living/simple_mob/animal/sif/diyaab,
|
||||
prob(15);/mob/living/simple_mob/animal/passive/crab,
|
||||
prob(15);/mob/living/simple_mob/animal/passive/penguin,
|
||||
prob(15);/mob/living/simple_animal/mouse,
|
||||
prob(15);/mob/living/simple_animal/corgi/tamaskan,
|
||||
prob(15);/mob/living/simple_mob/animal/passive/mouse,
|
||||
prob(15);/mob/living/simple_mob/animal/passive/dog/tamaskan,
|
||||
prob(2);/mob/living/simple_mob/animal/giant_spider/frost,
|
||||
prob(1);/mob/living/simple_animal/hostile/goose,
|
||||
prob(1);/mob/living/simple_mob/animal/space/goose,
|
||||
prob(20);/mob/living/simple_mob/animal/passive/crab)
|
||||
|
||||
|
||||
@@ -87,8 +87,8 @@
|
||||
return pick(prob(30);/mob/living/simple_mob/animal/sif/diyaab,
|
||||
prob(15);/mob/living/simple_mob/animal/passive/crab,
|
||||
prob(15);/mob/living/simple_mob/animal/passive/penguin,
|
||||
prob(15);/mob/living/simple_animal/mouse,
|
||||
prob(15);/mob/living/simple_animal/corgi/tamaskan,
|
||||
prob(15);/mob/living/simple_mob/animal/passive/mouse,
|
||||
prob(15);/mob/living/simple_mob/animal/passive/dog/tamaskan,
|
||||
prob(20);/mob/living/simple_mob/animal/sif/hooligan_crab)
|
||||
|
||||
/obj/random/mob/sif/hostile
|
||||
|
||||
@@ -66,15 +66,15 @@
|
||||
|
||||
/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/goat)
|
||||
|
||||
/obj/structure/largecrate/animal/cat
|
||||
name = "cat carrier"
|
||||
@@ -85,4 +85,4 @@
|
||||
|
||||
/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)
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
/obj/machinery/holoplant/proc/deactivate()
|
||||
overlays -= plant
|
||||
qdel_null(plant)
|
||||
QDEL_NULL(plant)
|
||||
set_light(0)
|
||||
use_power = 0
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
|
||||
data["replacer"] = myreplacer ? capitalize(myreplacer.name) : null
|
||||
data["signs"] = signs ? "[signs] sign\s" : null
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "janitorcart.tmpl", "Janitorial cart", 240, 160)
|
||||
ui.set_initial_data(data)
|
||||
|
||||
@@ -744,7 +744,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
|
||||
uncommon_loot = list(
|
||||
/obj/item/mecha_parts/mecha_equipment/shocker,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
|
||||
/obj/item/device/kit/paint/gygax,
|
||||
@@ -784,7 +784,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
|
||||
uncommon_loot = list(
|
||||
/obj/item/mecha_parts/mecha_equipment/shocker,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,
|
||||
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
|
||||
/obj/item/device/kit/paint/durand,
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(istype(usr,/mob/living/simple_animal/mouse))
|
||||
if(ismouse(usr))
|
||||
return
|
||||
else if(!usr || !isturf(usr.loc))
|
||||
return
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/list/mobs_can_pass = list(
|
||||
/mob/living/bot,
|
||||
/mob/living/simple_animal/slime,
|
||||
/mob/living/simple_animal/mouse,
|
||||
/mob/living/simple_mob/animal/passive/mouse,
|
||||
/mob/living/silicon/robot/drone
|
||||
)
|
||||
|
||||
|
||||
@@ -76,7 +76,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
|
||||
|
||||
Reference in New Issue
Block a user