OpenDream linting (#16468)

* I wanna set the universe on fire

* dfsaaf

* setup

* dir issue?

* dsf

* Perhaps the script

* saf

* cry

* pain

* sdfas

* Try reintroduction of tag-matcher

* Failed

* Tries to suppress dotnet compile warnings

* Like this maybe?

* woopsie

* Damn pathings

* Hate

* Pragmas

* unlint?

* Maybe?

* GDI

* Redundant ifdef removed and changelog

* Did I forgot the tag matcher, or it was still broken?

* Yea no that script is still broken

* Removed tag-matcher as requested

* *sigh*

* test

* bro what?

* hope

* just fixing the input

* Let's see if we catch it...
This commit is contained in:
Fluffy
2023-06-26 17:05:38 +02:00
committed by GitHub
parent 6947b31c12
commit 5e1332d60f
138 changed files with 395 additions and 541 deletions
+4 -1
View File
@@ -29,16 +29,19 @@ jobs:
pip install --user -r ./tools/requirements.txt
chmod +x ./scripts/code_check.sh && ./scripts/code_check.sh $PWD
bash tools/ci/install_spaceman_dmm.sh dreamchecker
bash tools/ci/setup_od.sh
- name: Code checks
run: |
awk -f tools/indentation.awk **/*.dm
python3 tools/TagMatcher/tag-matcher.py ../..
python3 tools/GenerateChangelog/ss13_genchangelog.py html/changelog.html html/changelogs --dry-run
python3 tools/mapmerge2/travis_mapcheck.py
echo "6a5ae087fe5bfa66e52e508655e57120 *html/changelogs/example.yml" | md5sum -c -
- name: Run dreamchecker
id: runDreamchecker
run: ~/dreamchecker > ${GITHUB_WORKSPACE}/output-annotations.txt 2>&1
- name: Run OpenDream Lint
id: runOpenDreamLint
run: bash tools/ci/run_od.sh
- name: Annotate Lints
if: failure() && steps.runDreamchecker.outcome == 'failure'
uses: yogstation13/DreamAnnotate@v2
+3
View File
@@ -10,6 +10,9 @@
#define DEBUG
// END_PREFERENCES
// BEGIN_INCLUDE
#ifdef OPENDREAM
#include "code\___odlint.dm"
#endif
#include "code\global.dm"
#include "code\hub.dm"
#include "code\names.dm"
+30
View File
@@ -0,0 +1,30 @@
#ifndef SPACEMAN_DMM
#pragma FileAlreadyIncluded error
#pragma MissingIncludedFile error
#pragma MisplacedDirective error
#pragma UndefineMissingDirective error
#pragma DefinedMissingParen error
#pragma ErrorDirective error
#pragma WarningDirective error
#pragma MiscapitalizedDirective error
//2000-2999
#pragma SoftReservedKeyword error
#pragma DuplicateVariable error
#pragma DuplicateProcDefinition error
#pragma TooManyArguments error
#pragma PointlessParentCall error
#pragma PointlessBuiltinCall error
#pragma SuspiciousMatrixCall error
#pragma MalformedRange error
#pragma InvalidRange error
#pragma InvalidSetStatement error
#pragma InvalidOverride error
#pragma DanglingVarType error
#pragma MissingInterpolatedExpression error
//3000-3999
#pragma EmptyBlock error
#endif
+1 -1
View File
@@ -961,7 +961,7 @@ var/list/wall_items = typecacheof(list(
// Returns a variable type as string, optionally with some details:
// Objects (datums) get their type, paths get the type name, scalars show length (text) and value (numbers), lists show length.
// Also attempts some detection of otherwise undetectable types using ref IDs
var/global/known_proc = new /proc/get_type_ref_bytes
var/global/known_proc = /proc/get_type_ref_bytes
/proc/get_debug_type(var/V, var/details = TRUE, var/print_numbers = TRUE, var/path_names = TRUE, var/text_lengths = TRUE, var/list_lengths = TRUE, var/show_useless_subtypes = TRUE)
// scalars / basic types
if(isnull(V))
@@ -98,25 +98,24 @@ var/datum/controller/subsystem/atoms/SSatoms
if(start_tick != world.time)
BadInitializeCalls[the_type] |= BAD_INIT_SLEPT
switch(result)
if(INITIALIZE_HINT_NORMAL)
// Pass
if(INITIALIZE_HINT_LATELOAD)
if(arguments[1]) //mapload
late_loaders += A
else
A.LateInitialize()
if(INITIALIZE_HINT_QDEL)
qdel(A)
return TRUE
if(INITIALIZE_HINT_LATEQDEL)
if(arguments[1]) //mapload
late_qdel += A
else
if(result !=INITIALIZE_HINT_NORMAL)
switch(result)
if(INITIALIZE_HINT_LATELOAD)
if(arguments[1]) //mapload
late_loaders += A
else
A.LateInitialize()
if(INITIALIZE_HINT_QDEL)
qdel(A)
return TRUE
else
BadInitializeCalls[the_type] |= BAD_INIT_NO_HINT
if(INITIALIZE_HINT_LATEQDEL)
if(arguments[1]) //mapload
late_qdel += A
else
qdel(A)
return TRUE
else
BadInitializeCalls[the_type] |= BAD_INIT_NO_HINT
if(!A) //possible harddel
return TRUE
+1 -1
View File
@@ -374,7 +374,7 @@
to_chat(H, "<span class='danger'><font size =3>You somehow have become the recipient of a loyalty transplant, and it just activated!</font></span>")
H.implant_loyalty(H, override = TRUE)
log_admin("[key_name_admin(usr)] has loyalty implanted [current].",admin_key=key_name(usr),ckey=key_name(usr))
else
else if (href_list["silicon"])
BITSET(current.hud_updateflag, SPECIALROLE_HUD)
switch(href_list["silicon"])
+1 -1
View File
@@ -61,7 +61,7 @@
/obj/structure/spaceship
name = "Abandoned Shuttle"
desc = "An ancient and inoperable shuttle-craft"
icon = 'icons/obj/machinery/spaceship.dmi'
icon = 'icons/obj/machinery/SpaceShip.dmi'
anchored = 1
density = 1
-2
View File
@@ -200,7 +200,6 @@
//SN src = null
qdel(src)
return
else
return
/obj/machinery/computer/scan_consolenew
@@ -253,7 +252,6 @@
//SN src = null
qdel(src)
return
else
return
/obj/machinery/computer/scan_consolenew/New()
@@ -10,33 +10,33 @@
// BEGIN RESEARCH DATUMS
/datum/malf_research_ability/interdiction/recall_shuttle
ability = new/datum/game_mode/malfunction/verb/recall_shuttle()
ability = /datum/game_mode/malfunction/verb/recall_shuttle
price = 75
next = new/datum/malf_research_ability/interdiction/unlock_cyborg()
next = /datum/malf_research_ability/interdiction/unlock_cyborg
name = "Recall Shuttle"
/datum/malf_research_ability/interdiction/unlock_cyborg
ability = new/datum/game_mode/malfunction/verb/unlock_cyborg()
ability = /datum/game_mode/malfunction/verb/unlock_cyborg
price = 1200
next = new/datum/malf_research_ability/interdiction/hack_drone()
next = /datum/malf_research_ability/interdiction/hack_drone
name = "Unlock Cyborg"
/datum/malf_research_ability/interdiction/hack_drone
ability = new/datum/game_mode/malfunction/verb/hack_drone()
ability = /datum/game_mode/malfunction/verb/hack_drone
price = 2500
next = new/datum/malf_research_ability/interdiction/hack_cyborg()
next = /datum/malf_research_ability/interdiction/hack_cyborg
name = "Hack maintenance drone"
/datum/malf_research_ability/interdiction/hack_cyborg
ability = new/datum/game_mode/malfunction/verb/hack_cyborg()
ability = /datum/game_mode/malfunction/verb/hack_cyborg
price = 3000
next = new/datum/malf_research_ability/interdiction/hack_ai()
next = /datum/malf_research_ability/interdiction/hack_ai
name = "Hack Cyborg"
/datum/malf_research_ability/interdiction/hack_ai
ability = new/datum/game_mode/malfunction/verb/hack_ai()
ability = /datum/game_mode/malfunction/verb/hack_ai
price = 7500
name = "Hack AI"
@@ -160,7 +160,7 @@
if(hacked_num >= config.hacked_drones_limit)
to_chat(user, SPAN_WARNING("ERROR: maximum active hacked drones limit reached. Report: [hacked_num] drones hacked out of [config.hacked_drones_limit] maximum possible."))
return
if(!ability_prechecks(user, price) || !ability_pay(user, price))
return
var/mob/living/silicon/robot/drone/D = pick(drone_list)
@@ -321,4 +321,4 @@
log_ability_use(user, "hack AI", target)
// END ABILITY VERBS
// END ABILITY VERBS
@@ -10,33 +10,33 @@
// BEGIN RESEARCH DATUMS
/datum/malf_research_ability/manipulation/hack_holopad
ability = new/datum/game_mode/malfunction/verb/hack_holopad()
ability = /datum/game_mode/malfunction/verb/hack_holopad
price = 50
next = new/datum/malf_research_ability/manipulation/hack_camera()
next = /datum/malf_research_ability/manipulation/hack_camera
name = "Hack Holopad"
/datum/malf_research_ability/manipulation/hack_camera
ability = new/datum/game_mode/malfunction/verb/hack_camera()
ability = /datum/game_mode/malfunction/verb/hack_camera
price = 1200
next = new/datum/malf_research_ability/manipulation/emergency_forcefield()
next = /datum/malf_research_ability/manipulation/emergency_forcefield
name = "Hack Camera"
/datum/malf_research_ability/manipulation/emergency_forcefield
ability = new/datum/game_mode/malfunction/verb/emergency_forcefield()
ability = /datum/game_mode/malfunction/verb/emergency_forcefield
price = 1750
next = new/datum/malf_research_ability/manipulation/gravity_malfunction()
next = /datum/malf_research_ability/manipulation/gravity_malfunction
name = "Emergency Forcefield"
/datum/malf_research_ability/manipulation/gravity_malfunction
ability = new/datum/game_mode/malfunction/verb/gravity_malfunction()
ability = /datum/game_mode/malfunction/verb/gravity_malfunction
price = 2500
next = new/datum/malf_research_ability/manipulation/machine_overload()
next = /datum/malf_research_ability/manipulation/machine_overload
name = "Gravity Malfunction"
/datum/malf_research_ability/manipulation/machine_overload
ability = new/datum/game_mode/malfunction/verb/machine_overload()
ability = /datum/game_mode/malfunction/verb/machine_overload
price = 5000
name = "Machine Overload"
@@ -10,26 +10,26 @@
// BEGIN RESEARCH DATUMS
/datum/malf_research_ability/networking/basic_hack
ability = new/datum/game_mode/malfunction/verb/basic_encryption_hack()
ability = /datum/game_mode/malfunction/verb/basic_encryption_hack
price = 25
next = new/datum/malf_research_ability/networking/advanced_hack()
next = /datum/malf_research_ability/networking/advanced_hack
name = "Basic Encryption Hack"
/datum/malf_research_ability/networking/advanced_hack
ability = new/datum/game_mode/malfunction/verb/advanced_encryption_hack()
ability = /datum/game_mode/malfunction/verb/advanced_encryption_hack
price = 400
next = new/datum/malf_research_ability/networking/elite_hack()
next = /datum/malf_research_ability/networking/elite_hack
name = "Advanced Encryption Hack"
/datum/malf_research_ability/networking/elite_hack
ability = new/datum/game_mode/malfunction/verb/elite_encryption_hack()
ability = /datum/game_mode/malfunction/verb/elite_encryption_hack
price = 1000
next = new/datum/malf_research_ability/networking/system_override()
next = /datum/malf_research_ability/networking/system_override
name = "Elite Encryption Hack"
/datum/malf_research_ability/networking/system_override
ability = new/datum/game_mode/malfunction/verb/system_override()
ability = /datum/game_mode/malfunction/verb/system_override
price = 5000
name = "System Override"
@@ -143,7 +143,6 @@
var/resp = alert(usr, "Would you like it to appear as if CCIAMS made the report?",,"Yes","No")
if (resp == "Yes")
reportbody += "\n\n- CCIAMS, [commstation_name()]"
else
switch(alert("Should this be announced to the general population?",,"Yes","No"))
if("Yes")
@@ -289,7 +288,7 @@
user.hack_can_fail = 0
user.hacking = 0
user.system_override = 2
add_verb(user, new/datum/game_mode/malfunction/verb/ai_destroy_station())
add_verb(user, /datum/game_mode/malfunction/verb/ai_destroy_station)
// END ABILITY VERBS
@@ -10,28 +10,28 @@
// BEGIN RESEARCH DATUMS
/datum/malf_research_ability/synthetic/reset_module
ability = new/datum/game_mode/malfunction/verb/reset_module()
ability = /datum/game_mode/malfunction/verb/reset_module
price = 100
next = new/datum/malf_research_ability/synthetic/infect_apc()
next = /datum/malf_research_ability/synthetic/infect_apc
name = "Reset Cyborg Module"
/datum/malf_research_ability/synthetic/infect_apc
ability = new/datum/game_mode/malfunction/verb/infect_apc()
ability = /datum/game_mode/malfunction/verb/infect_apc
price = 500
next = new/datum/malf_research_ability/synthetic/overclock_borg()
next = /datum/malf_research_ability/synthetic/overclock_borg
name = "Infect APC"
/datum/malf_research_ability/synthetic/overclock_borg
ability = new/datum/game_mode/malfunction/verb/overclock_borg()
ability = /datum/game_mode/malfunction/verb/overclock_borg
price = 1300
next = new/datum/malf_research_ability/synthetic/synthetic_takeover
next = /datum/malf_research_ability/synthetic/synthetic_takeover
name = "Overclock Cyborg"
/datum/malf_research_ability/synthetic/synthetic_takeover
ability = new/datum/game_mode/malfunction/verb/synthetic_takeover()
ability = /datum/game_mode/malfunction/verb/synthetic_takeover
price = 4000
name = "Synthetic Takeover"
+1 -1
View File
@@ -41,7 +41,7 @@
m = min(m, cable.amount)
m = min(m, 30)
if(m)
playsound(loc, 'sound/items/wirecutter.ogg', 50, 1)
playsound(loc, 'sound/items/Wirecutter.ogg', 50, 1)
var/cable_color = use_cable(m)
var/obj/item/stack/cable_coil/CC = new(get_turf(src), m, cable_color)
user.put_in_hands(CC)
+1 -1
View File
@@ -243,7 +243,7 @@
return TRUE
if(!istype(L))
to_chat(user, "<span class='warning'>\The machine won't accept that.</span>")
to_chat(user, "<span class='warning'>The machine won't accept that.</span>")
return TRUE
if(display_loading_message)
+1 -1
View File
@@ -779,7 +779,7 @@
if (wiresexposed && W.iswirecutter())
user.visible_message("<span class='warning'>[user] has cut the wires inside \the [src]!</span>", "You cut the wires inside \the [src].")
playsound(src.loc, 'sound/items/wirecutter.ogg', 50, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
new/obj/item/stack/cable_coil(get_turf(src), 5)
buildstage = 1
update_icon()
+3 -3
View File
@@ -232,7 +232,7 @@
visible_message("<span class='notice'> [user] has deactivated [src]!</span>")
else
visible_message("<span class='notice'> [src] clicks and shuts down. </span>")
playsound(src.loc, 'sound/items/wirecutter.ogg', 100, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
icon_state = "[initial(icon_state)]1"
add_hiddenprint(user)
else
@@ -240,7 +240,7 @@
visible_message("<span class='notice'> [user] has reactivated [src]!</span>")
else
visible_message("<span class='notice'> [src] clicks and reactivates itself. </span>")
playsound(src.loc, 'sound/items/wirecutter.ogg', 100, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
icon_state = initial(icon_state)
add_hiddenprint(user)
@@ -367,7 +367,7 @@
// Do after stuff here
to_chat(user, "<span class='notice'>You start to weld the [src]..</span>")
playsound(src.loc, 'sound/items/welder.ogg', 50, 1)
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
user.flash_act(FLASH_PROTECTION_MAJOR)
busy = 1
if(WT.use_tool(src, user, 100, volume = 50))
@@ -118,7 +118,7 @@
else if(W.iswirecutter())
new/obj/item/stack/cable_coil(get_turf(src), 2)
playsound(src.loc, 'sound/items/wirecutter.ogg', 50, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
to_chat(user, "You cut the wires from the circuits.")
state = 2
return TRUE
@@ -166,7 +166,7 @@
return 0
to_chat(user, "<span class='notice'>You start to weld the [src]..</span>")
playsound(src.loc, 'sound/items/welder.ogg', 50, 1)
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
user.flash_act(FLASH_PROTECTION_MAJOR)
busy = 1
if(WT.use_tool(src, user, 20, volume = 50))
-1
View File
@@ -366,7 +366,6 @@
ex_act(severity)
qdel(src)
return
else
return
/obj/machinery/clonepod/update_icon()
+1 -1
View File
@@ -86,7 +86,7 @@
if (brain)
to_chat(user, "Get that brain out of there first")
else
playsound(loc, 'sound/items/wirecutter.ogg', 50, 1)
playsound(loc, 'sound/items/Wirecutter.ogg', 50, 1)
to_chat(user, "<span class='notice'>You remove the cables.</span>")
state = 2
icon_state = "2"
@@ -84,7 +84,7 @@
return TRUE
if(3)
if(P.iswirecutter())
playsound(src.loc, 'sound/items/wirecutter.ogg', 50, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
to_chat(user, "<span class='notice'>You remove the cables.</span>")
src.state = 2
src.icon_state = "2"
-1
View File
@@ -54,7 +54,6 @@
for(var/x in verbs)
verbs -= x
set_broken()
else
return
/obj/machinery/computer/bullet_act(var/obj/item/projectile/Proj)
+2 -2
View File
@@ -237,7 +237,7 @@ for reference:
src.health -= W.force * 0.75
if("brute")
src.health -= W.force * 0.5
else
if (src.health <= 0)
src.explode()
..()
@@ -322,7 +322,7 @@ for reference:
qdel(src)
/obj/item/deployable_kit/proc/assemble_kit(mob/user)
playsound(src.loc, 'sound/items/screwdriver.ogg', 25, 1)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, 1)
var/atom/A = new kit_product(user.loc)
user.visible_message(SPAN_NOTICE("[user] assembles \a [A]."), SPAN_NOTICE("You assemble \a [A]."))
A.add_fingerprint(user)
+13 -14
View File
@@ -7,7 +7,7 @@
/obj/machinery/door/airlock
name = "Airlock"
icon = 'icons/obj/doors/Doorint.dmi'
icon = 'icons/obj/doors/doorint.dmi'
icon_state = "door_closed"
power_channel = ENVIRON
hatch_colour = "#7d7d7d"
@@ -54,8 +54,8 @@
var/open_sound_unpowered = 'sound/machines/airlock_open_force.ogg'
var/close_sound_unpowered = 'sound/machines/airlock_close_force.ogg'
var/bolts_dropping = 'sound/machines/boltsdown.ogg'
var/bolts_rising = 'sound/machines/boltsup.ogg'
var/bolts_dropping = 'sound/machines/BoltsDown.ogg'
var/bolts_rising = 'sound/machines/BoltsUp.ogg'
hashatch = TRUE
@@ -184,7 +184,7 @@
hatch_colour = "#caa638"
/obj/machinery/door/airlock/medical
icon = 'icons/obj/doors/Doormed.dmi'
icon = 'icons/obj/doors/doormed.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_med
hatch_colour = "#d2d2d2"
@@ -206,13 +206,13 @@
close_sound_powered = 'sound/machines/airlock/space1c.ogg'
/obj/machinery/door/airlock/science
icon = 'icons/obj/doors/Doorsci.dmi'
icon = 'icons/obj/doors/doorsci.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_science
hatch_colour = "#d2d2d2"
/obj/machinery/door/airlock/glass_science
name = "Glass Airlocks"
icon = 'icons/obj/doors/Doorsciglass.dmi'
icon = 'icons/obj/doors/doorsciglass.dmi'
opacity = FALSE
assembly_type = /obj/structure/door_assembly/door_assembly_science
glass = 1
@@ -431,7 +431,7 @@
/obj/machinery/door/airlock/glass_medical
name = "Glass Airlock"
icon = 'icons/obj/doors/Doormedglass.dmi'
icon = 'icons/obj/doors/doormedglass.dmi'
hitsound = 'sound/effects/glass_hit.ogg'
maxhealth = 300
explosion_resistance = 5
@@ -456,13 +456,13 @@
/obj/machinery/door/airlock/research
name = "Airlock"
icon = 'icons/obj/doors/Doorresearch.dmi'
icon = 'icons/obj/doors/doorresearch.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_research
hatch_colour = "#d2d2d2"
/obj/machinery/door/airlock/glass_research
name = "Glass Airlock"
icon = 'icons/obj/doors/Doorresearchglass.dmi'
icon = 'icons/obj/doors/doorresearchglass.dmi'
hitsound = 'sound/effects/glass_hit.ogg'
maxhealth = 300
explosion_resistance = 5
@@ -1144,12 +1144,12 @@ About the new airlock wires panel:
to_chat(user, SPAN_NOTICE("You need more welding fuel to complete this task."))
return
cut_verb = "cutting"
cut_sound = 'sound/items/welder.ogg'
cut_sound = 'sound/items/Welder.ogg'
cut_delay *= 1.5/WT.toolspeed
cutting = TRUE
else if(istype(tool,/obj/item/gun/energy/plasmacutter))
cut_verb = "cutting"
cut_sound = 'sound/items/welder.ogg'
cut_sound = 'sound/items/Welder.ogg'
cut_delay *= 1
cutting = TRUE
else if(istype(tool,/obj/item/melee/energy/blade) || istype(tool,/obj/item/melee/energy/sword))
@@ -1297,7 +1297,7 @@ About the new airlock wires panel:
SPAN_NOTICE("You begin welding [src] [welded ? "open" : "shut"]."),
"You hear a welding torch on metal."
)
playsound(src, 'sound/items/welder.ogg', 50, 1)
playsound(src, 'sound/items/Welder.ogg', 50, 1)
if(!WT.use_tool(src, user, 20, volume = 50, extra_checks = CALLBACK(src, PROC_REF(is_open), src.density)))
return TRUE
if(!WT.use(0,user))
@@ -1331,8 +1331,7 @@ About the new airlock wires panel:
return TRUE
else if(!repairing && C.iscrowbar())
if(istype(C, /obj/item/melee/arm_blade))
if(!arePowerSystemsOn()) //if this check isn't done and empty, the armblade will never be used to hit the airlock
else if(!(stat & BROKEN))
if(arePowerSystemsOn() &&!(stat & BROKEN))
..()
return
if(p_open && !operating && welded)
+1 -1
View File
@@ -4,7 +4,7 @@
/obj/machinery/door
name = "Door"
desc = "It opens and closes."
icon = 'icons/obj/doors/Doorint.dmi'
icon = 'icons/obj/doors/doorint.dmi'
icon_state = "door_closed"
anchored = 1
opacity = 1
+1 -1
View File
@@ -274,7 +274,7 @@
SPAN_NOTICE("You begin welding [src] [blocked ? "open" : "shut"]."),
SPAN_ITALIC("You hear a welding torch on metal.")
)
playsound(src, 'sound/items/welder.ogg', 50, 1)
playsound(src, 'sound/items/Welder.ogg', 50, 1)
if(!WT.use_tool(src, user, 20, volume = 50, extra_checks = CALLBACK(src, PROC_REF(is_open), src.density)))
return
if(!WT.use(0,user))
+1 -1
View File
@@ -109,7 +109,7 @@
else if (W.iswirecutter())
user.visible_message("<span class='notice'>\The [user] has cut the wires inside \the [src]!</span>", "<span class='notice'>You have cut the wires inside \the [src].</span>")
new/obj/item/stack/cable_coil(get_turf(src), 5)
playsound(src.loc, 'sound/items/wirecutter.ogg', 50, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
buildstage = 1
update_icon()
return TRUE
+1 -1
View File
@@ -28,7 +28,7 @@ var/list/floor_light_cache = list()
if(W.isscrewdriver())
anchored = !anchored
visible_message("<span class='notice'>\The [user] has [anchored ? "attached" : "detached"] \the [src].</span>")
playsound(src.loc, 'sound/items/screwdriver.ogg', 100, 1)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
return TRUE
else if(W.iswelder() && (damaged || (stat & BROKEN)))
var/obj/item/weldingtool/WT = W
+1 -1
View File
@@ -31,7 +31,7 @@
new/datum/track("Endless Space", 'sound/music/space.ogg'),
new/datum/track("Scratch", 'sound/music/title1.ogg'),
new/datum/track("Suspenseful", 'sound/music/traitor.ogg'),
new/datum/track("Thunderdome", 'sound/music/thunderdome.ogg'),
new/datum/track("Thunderdome", 'sound/music/THUNDERDOME.ogg'),
new/datum/track("Velvet Rose", 'sound/music/velvet_rose.ogg')
)
-1
View File
@@ -212,7 +212,6 @@ Class Procs:
if (prob(25))
qdel(src)
return
else
return
/proc/is_operable(var/obj/machinery/M, var/mob/user)
+3 -3
View File
@@ -890,7 +890,7 @@
to_chat(user, "<span class='notice'>You need more fuel to complete this task.</span>")
return TRUE
playsound(loc, pick('sound/items/welder.ogg', 'sound/items/welder_pry.ogg'), 50, 1)
playsound(loc, pick('sound/items/Welder.ogg', 'sound/items/welder_pry.ogg'), 50, 1)
if(I.use_tool(src, user, 20, volume = 50))
if(!src || !WT.use(5, user)) return TRUE
build_step = 1
@@ -979,7 +979,7 @@
if(WT.get_fuel() < 5)
to_chat(user, "<span class='notice'>You need more fuel to complete this task.</span>")
playsound(loc, pick('sound/items/welder.ogg', 'sound/items/welder_pry.ogg'), 50, 1)
playsound(loc, pick('sound/items/Welder.ogg', 'sound/items/welder_pry.ogg'), 50, 1)
if(I.use_tool(src, user, 30, volume = 50))
if(!src || !WT.use(5, user))
return
@@ -1096,7 +1096,7 @@
sprite_set = "crossbow"
eprojectile = /obj/item/projectile/energy/bolt/large
eshot_sound = 'sound/weapons/genhit.ogg'
eshot_sound = 'sound/weapons/Genhit.ogg'
req_one_access = list(access_syndicate)
/obj/machinery/porta_turret/cannon
+1 -1
View File
@@ -84,7 +84,7 @@ var/list/ai_status_emotions = list(
src.update()
/proc/get_ai_emotion(mob/user as mob)
return input(user, "Please, select a status!", "AI Status", null, null) in get_ai_emotions(user.ckey)
return input(user, "Please, select a status!", "AI Status", null) in get_ai_emotions(user.ckey)
/obj/machinery/ai_status_display/proc/update()
switch (mode)
+1 -1
View File
@@ -51,7 +51,7 @@
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
return
if(canuse)
playsound(src.loc, 'sound/items/welder.ogg', 50, 1)
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
use_power_oneoff(6000) // Use a lot of power.
message_admins("[key_name(H)] has been borgified by the Autoborger 5000.")
visible_message("<span class='danger'>The machine makes a series of loud sounds as it starts to replace [H]'s organs and limbs with robotic parts!</span>")
-1
View File
@@ -219,7 +219,6 @@
src.malfunction()
return
return
else
return
/obj/machinery/vending/emag_act(var/remaining_charges, var/mob/user)
+19 -20
View File
@@ -201,30 +201,29 @@ it should be avoided in favour of manual removal where possible
if (!target || !modifier_type)
return invalid_creation("No target and/or no modifier type was submitted")
switch (modifier_type)
if (MODIFIER_EQUIPMENT)
if (!istype(target, /mob))
return invalid_creation("Equipment type requires a mob target")
if(modifier_type != MODIFIER_CUSTOM)
switch (modifier_type)
if (MODIFIER_EQUIPMENT)
if (!istype(target, /mob))
return invalid_creation("Equipment type requires a mob target")
if (!source || !istype(source, /obj))
return invalid_creation("Equipment type requires an object source")
if (!source || !istype(source, /obj))
return invalid_creation("Equipment type requires an object source")
//TODO: Port equip slot var
if (MODIFIER_ITEM)
if (!source || !istype(source, /obj))
return invalid_creation("Item type requires a source")
//TODO: Port equip slot var
if (MODIFIER_ITEM)
if (!source || !istype(source, /obj))
return invalid_creation("Item type requires a source")
if (MODIFIER_AURA)
if (!source || !istype(source, /atom))
return invalid_creation("Aura type requires an atom source")
if (MODIFIER_AURA)
if (!source || !istype(source, /atom))
return invalid_creation("Aura type requires an atom source")
if (MODIFIER_TIMED)
if (!duration || duration <= 0)
return invalid_creation("Timed type requires a duration")
if (MODIFIER_CUSTOM)
//No code here, just to prevent else
else
return invalid_creation("Invalid or unrecognised modifier type")//Not a valid modifier type.
if (MODIFIER_TIMED)
if (!duration || duration <= 0)
return invalid_creation("Timed type requires a duration")
else
return invalid_creation("Invalid or unrecognised modifier type")//Not a valid modifier type.
return 1
+1 -1
View File
@@ -23,7 +23,7 @@
return TRUE
if(WT.use(0,user))
user.visible_message("<b>[user]</b> starts slicing \the [src] apart.", SPAN_NOTICE("You start slicing \the [src] apart."))
playsound(src, 'sound/items/welder.ogg', 100, 1)
playsound(src, 'sound/items/Welder.ogg', 100, 1)
var/slice_time = reinf_material ? 100 : 30
if(WT.use_tool(src, user, slice_time, volume = 50))
user.visible_message("<b>[user]</b> slices \the [src] apart.", SPAN_NOTICE("You slice \the [src] apart."))
@@ -128,7 +128,7 @@
/obj/structure/sign/poster/attackby(obj/item/W as obj, mob/user as mob)
if(W.iswirecutter())
playsound(loc, 'sound/items/wirecutter.ogg', 100, 1)
playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1)
if(ruined)
to_chat(user, "<span class='notice'>You remove the remnants of the poster.</span>")
qdel(src)
+1 -1
View File
@@ -27,7 +27,7 @@
var/obj/item/weldingtool/WT = W
if(WT.use(0, user))
damage = 15
playsound(loc, 'sound/items/welder.ogg', 100, 1)
playsound(loc, 'sound/items/Welder.ogg', 100, 1)
return TRUE
else
user.do_attack_animation(src)
+2 -2
View File
@@ -163,7 +163,7 @@
if (prob(5))
qdel(src)
return
else
return
/obj/item/verb/move_to_top(obj/item/I in range(1))
@@ -330,7 +330,7 @@
else if(hitsound)
playsound(hit_atom, hitsound, volume, TRUE, -1)
else
playsound(hit_atom, 'sound/weapons/genhit.ogg', volume, TRUE, -1)
playsound(hit_atom, 'sound/weapons/Genhit.ogg', volume, TRUE, -1)
else
playsound(hit_atom, 'sound/weapons/throwtap.ogg', 1, volume, -1)
else
+1 -1
View File
@@ -451,7 +451,7 @@
"<span class='warning'>[user] begins cutting cable restrains on zipper of [src].</span>",
"<span class='notice'>You begin cutting cable restrains on zipper of [src].</span>"
)
playsound(loc, 'sound/items/wirecutter.ogg', 50, 1)
playsound(loc, 'sound/items/Wirecutter.ogg', 50, 1)
if (!do_after(user, 3 SECONDS, act_target = src, extra_checks = CALLBACK(src, PROC_REF(is_closed))))
return TRUE
zipped = !zipped
+9 -9
View File
@@ -268,14 +268,14 @@
if (!isturf(NT) || (NT in found) || (NT in pending))
continue
switch(check_tile_is_border(NT,dir))
if(BORDER_NONE)
pending+=NT
if(BORDER_BETWEEN)
//do nothing, may be later i'll add 'rejected' list as optimization
if(BORDER_2NDTILE)
found+=NT //tile included to new area, but we dont seek more
if(BORDER_SPACE)
return ROOM_ERR_SPACE
var/tile_is_border = check_tile_is_border(NT,dir)
if(tile_is_border != BORDER_BETWEEN)
switch(tile_is_border)
if(BORDER_NONE)
pending+=NT
if(BORDER_2NDTILE)
found+=NT //tile included to new area, but we dont seek more
if(BORDER_SPACE)
return ROOM_ERR_SPACE
found+=T
return found
+1 -1
View File
@@ -90,7 +90,7 @@
return TRUE
else if(W.iswirecutter())
to_chat(user, "You cut the tag off the bodybag.")
playsound(src.loc, 'sound/items/wirecutter.ogg', 50, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
src.name = "body bag"
LAZYREMOVE(overlays, image(icon, "bodybag_label"))
return TRUE
@@ -251,7 +251,7 @@
if(usr.incapacitated())
return
var/new_colour = input(usr, "Choose a colour.", "paintgun", paint_colour) as color|anything in preset_colors
var/new_colour = input(usr, "Choose a colour.", "paintgun", paint_colour) as null|anything in preset_colors
if(new_colour && new_colour != paint_colour)
paint_colour = preset_colors[new_colour]
to_chat(usr, "<span class='notice'>You set \the [src] to paint with <font color='[paint_colour]'>a new colour</font>.</span>")
+1 -1
View File
@@ -32,7 +32,7 @@
/obj/item/device/multitool/hacktool/attackby(var/obj/item/W, var/mob/user)
if(W.isscrewdriver())
in_hack_mode = !in_hack_mode
playsound(src.loc, 'sound/items/screwdriver.ogg', 50, TRUE)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, TRUE)
return TRUE
else
return ..()
@@ -145,7 +145,7 @@
addtimer(CALLBACK(GLOBAL_PROC, /proc/playsound, loc, "sound/effects/sparks[rand(1,4)].ogg", 30, 1), 3, TIMER_CLIENT_TIME)
else
user.visible_message("<span class='danger'>[user] hits [src] with [I] but fails to damage it.</span>", "<span class='warning'>You hit [src] with [I], [I.force >= 10 ? "and it almost makes a dent!" : "but it appears to have no visible effect."]</span>")
playsound(loc, "sound/weapons/genhit.ogg", I.force*2.5, 1)
playsound(loc, "sound/weapons/Genhit.ogg", I.force*2.5, 1)
return TRUE
if(invincible)
@@ -167,7 +167,7 @@
var/obj/item/weldingtool/WT = I
if (WT.use(2, user))
user.visible_message(SPAN_NOTICE("[user] starts welding the metal shell of [src]."), SPAN_NOTICE("You start [hacked ? "repairing" : "welding open"] the metal covering of [src]."))
playsound(loc, 'sound/items/welder.ogg', 50, 1)
playsound(loc, 'sound/items/Welder.ogg', 50, 1)
add_overlay("overlay_welding")
if(WT.use_tool(src, user, 25, volume = 50))
to_chat(user, SPAN_NOTICE("You are able to [hacked ? "repair" : "weld through"] the metal shell of [src]."))
@@ -222,7 +222,7 @@
if (3)
if (I.iswirecutter())
to_chat(user, SPAN_NOTICE("You cut the wires connecting the [src]'s magnets to their internal powersupply, [target ? "making the device fall off [target] and rendering it unusable." : "rendering the device unusable."]"))
playsound(loc, 'sound/items/wirecutter.ogg', 50, 1)
playsound(loc, 'sound/items/Wirecutter.ogg', 50, 1)
setconstructionstate(4)
return TRUE
+2 -2
View File
@@ -49,7 +49,7 @@
to_chat(user, SPAN_WARNING("\The [O] must be safely placed on the ground for modification."))
return
playsound(user.loc, 'sound/items/screwdriver.ogg', 100, 1)
playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1)
user.visible_message(
SPAN_NOTICE("\The [user] opens \the [src] and modifies \the [O]."),
@@ -310,4 +310,4 @@
/obj/item/storage/box/dominianvoid
name = "dominian voidsman's modkit box"
desc = "Contains modkits to convert Dominian voidsuits into a voidsman's variant."
starts_with = list(/obj/item/voidsuit_modkit/dominianvoid = 4)
starts_with = list(/obj/item/voidsuit_modkit/dominianvoid = 4)
+1 -1
View File
@@ -13,7 +13,7 @@
/obj/item/device/kit/use(var/amt, var/mob/user)
uses -= amt
playsound(get_turf(user), 'sound/items/screwdriver.ogg', 50, 1)
playsound(get_turf(user), 'sound/items/Screwdriver.ogg', 50, 1)
if(uses<1)
user.drop_from_inventory(src,get_turf(src))
qdel(src)
@@ -138,7 +138,7 @@
else if(O.iswirecutter())
user.drop_from_inventory(O,get_turf(src))
to_chat(user, "<span class='notice'>You detach the wire from the [name].</span>")
playsound(src.loc, 'sound/items/wirecutter.ogg', 100, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
new /obj/item/stack/cable_coil(user.loc, 5)
new /obj/item/stack/material/glass(user.loc)
use(1)
+1 -1
View File
@@ -221,7 +221,7 @@
update_icon(user)
else if(can_be_cut && I.iswirecutter())
user.visible_message("[user] cuts the [src].", SPAN_NOTICE("You cut the [src]."))
playsound(src.loc, 'sound/items/wirecutter.ogg', 50, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
new/obj/item/stack/cable_coil(get_turf(src), 15, color)
qdel(src)
update_icon(user)
+3 -3
View File
@@ -74,7 +74,7 @@
/obj/item/shield/riot/handle_shield(mob/user)
. = ..()
if(.) playsound(user.loc, 'sound/weapons/genhit.ogg', 50, 1)
if(.) playsound(user.loc, 'sound/weapons/Genhit.ogg', 50, 1)
/obj/item/shield/riot/get_block_chance(mob/user, var/damage, atom/damage_source = null, mob/attacker = null)
if(istype(damage_source, /obj/item/projectile))
@@ -113,7 +113,7 @@
/obj/item/shield/buckler/handle_shield(mob/user)
. = ..()
if(.) playsound(user.loc, 'sound/weapons/genhit.ogg', 50, 1)
if(.) playsound(user.loc, 'sound/weapons/Genhit.ogg', 50, 1)
/obj/item/shield/buckler/get_block_chance(mob/user, var/damage, atom/damage_source = null, mob/attacker = null)
if(istype(damage_source, /obj/item/projectile))
@@ -323,7 +323,7 @@
. = ..()
if(.)
if(.) playsound(user.loc, 'sound/weapons/genhit.ogg', 50, 1)
if(.) playsound(user.loc, 'sound/weapons/Genhit.ogg', 50, 1)
/obj/item/shield/riot/tact/attack_self(mob/living/user)
active = !active
+3 -3
View File
@@ -62,7 +62,7 @@
w_class = ITEMSIZE_TINY
matter = list(DEFAULT_WALL_MATERIAL = 75)
attack_verb = list("stabbed")
usesound = 'sound/items/screwdriver.ogg'
usesound = 'sound/items/Screwdriver.ogg'
drop_sound = 'sound/items/drop/screwdriver.ogg'
pickup_sound = 'sound/items/pickup/screwdriver.ogg'
lock_picking_level = 5
@@ -137,7 +137,7 @@
attack_verb = list("pinched", "nipped")
sharp = TRUE
edge = TRUE
usesound = 'sound/items/wirecutter.ogg'
usesound = 'sound/items/Wirecutter.ogg'
drop_sound = 'sound/items/drop/wirecutter.ogg'
pickup_sound = 'sound/items/pickup/wirecutter.ogg'
var/bomb_defusal_chance = 30 // 30% chance to safely defuse a bomb
@@ -219,7 +219,7 @@
slot_flags = SLOT_BELT
drop_sound = 'sound/items/drop/weldingtool.ogg'
pickup_sound = 'sound/items/pickup/weldingtool.ogg'
usesound = 'sound/items/welder.ogg'
usesound = 'sound/items/Welder.ogg'
attack_verb = list("hit", "bludgeoned", "whacked")
@@ -54,7 +54,7 @@
switch(dir)
if(SOUTH)
layer = ABOVE_MOB_LAYER
else if(NORTH)
if(NORTH)
layer = initial(layer) - 0.01
else
layer = initial(layer)
+1 -2
View File
@@ -15,7 +15,6 @@ var/global/list/total_active_bonfires = list()
var/max_fuel = 2000
var/on_fire = FALSE
var/safe = FALSE
var/obj/machinery/appliance/bonfire/cook_machine
var/list/burnable_materials = list(MATERIAL_WOOD = 200, MATERIAL_WOOD_LOG = 400, MATERIAL_WOOD_BRANCH = 40, MATERIAL_COTTON = 20, MATERIAL_CLOTH = 50, MATERIAL_CARPET = 20, MATERIAL_CARDBOARD = 35)
var/list/burnable_other = list(/obj/item/ore/coal = 750, /obj/item/torch = 20) //For items without material/default material
var/heat_range = 5 //Range in which it will heat other people
@@ -385,4 +384,4 @@ var/global/list/total_active_bonfires = list()
return !density
return TRUE
#undef MAX_ACTIVE_BONFIRE_LIMIT
#undef MAX_ACTIVE_BONFIRE_LIMIT
@@ -414,7 +414,7 @@
screwed = FALSE
else if(!screwed && wrenched)
to_chat(user, SPAN_NOTICE("You start to screw the \the [src] to the floor..."))
playsound(src, 'sound/items/welder.ogg', 80, 1)
playsound(src, 'sound/items/Welder.ogg', 80, 1)
if (do_after(user, 15/W.toolspeed SECONDS, act_target = src))
to_chat(user, SPAN_NOTICE("You screw \the [src]!"))
playsound(loc, W.usesound, 50, 1)
+1 -1
View File
@@ -114,7 +114,7 @@
return
else
health -= rand(40,80)
else
if(health <= 0)
harvest()
return
@@ -258,7 +258,7 @@
to_chat(user, SPAN_WARNING("\The [src]'s wires cannot be reached, take out the electronics first."))
return
playsound(src.loc, 'sound/items/wirecutter.ogg', 100, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
user.visible_message("<b>[user]</b> starts cutting the wires from the airlock assembly.", SPAN_NOTICE("You start cutting the wires from airlock assembly."))
if(W.use_tool(src, user, 40, volume = 50))
@@ -277,7 +277,7 @@
return
var/obj/item/airlock_electronics/EL = W
if(!EL.is_installed)
playsound(src.loc, 'sound/items/screwdriver.ogg', 100, 1)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
user.visible_message("<b>[user]</b> starts installing \the [EL] into the airlock assembly.", SPAN_NOTICE("You start installing \the [EL] into the airlock assembly."))
EL.is_installed = TRUE
if(W.use_tool(src, user, 40, volume = 50) && state == STATE_WIRED)
@@ -115,7 +115,7 @@
if(!WT.isOn())
to_chat(user, SPAN_NOTICE("\The [WT] isn't turned on."))
return
playsound(src, 'sound/items/welder.ogg', 50, TRUE)
playsound(src, 'sound/items/Welder.ogg', 50, TRUE)
user.visible_message(
SPAN_WARNING("\The [user] starts welding \the [src] apart!"),
SPAN_NOTICE("You start welding \the [src] apart..."),
-1
View File
@@ -301,7 +301,6 @@
return
else
health -= rand(40,80)
else
if(health <= 0)
dismantle()
+2 -2
View File
@@ -99,7 +99,7 @@
/obj/structure/grille/attackby(obj/item/W, mob/user)
if(W.iswirecutter())
if(!shock(user, 100))
playsound(loc, 'sound/items/wirecutter.ogg', 100, 1)
playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1)
new /obj/item/stack/rods(get_turf(src), destroyed ? 1 : 2)
qdel(src)
else if(istype(W, /obj/item/gun/energy/plasmacutter))
@@ -112,7 +112,7 @@
qdel(src)
else if((W.isscrewdriver()) && (istype(loc, /turf/simulated) || anchored))
if(!shock(user, 90))
playsound(loc, 'sound/items/screwdriver.ogg', 100, 1)
playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
anchored = !anchored
user.visible_message("<span class='notice'>[user] [anchored ? "fastens" : "unfastens"] the grille.</span>", \
"<span class='notice'>You have [anchored ? "fastened the grille to" : "unfastened the grill from"] the floor.</span>")
+2 -2
View File
@@ -69,7 +69,7 @@
var/obj/item/stack/rods/R = C
if (R.use(2))
to_chat(user, "<span class='notice'>Constructing catwalk ...</span>")
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
new /obj/structure/lattice/catwalk(src.loc)
qdel(src)
return
@@ -164,7 +164,7 @@
var/obj/item/weldingtool/WT = C
if(C.use_tool(src, user, 5, volume = 50) && WT.use(1, user))
to_chat(user, SPAN_NOTICE("You slice apart the [src] leaving nothing useful behind."))
playsound(src, 'sound/items/welder.ogg', 50, 1)
playsound(src, 'sound/items/Welder.ogg', 50, 1)
qdel(src)
else
..()
+2 -2
View File
@@ -275,9 +275,9 @@
desperation = rand(1,5)
switch(desperation) //This is messy. A better solution would probably be to make more sounds, but...
if(1)
playsound(src.loc, 'sound/weapons/genhit.ogg', 45, 1)
playsound(src.loc, 'sound/weapons/Genhit.ogg', 45, 1)
shake_animation(2)
playsound(src.loc, 'sound/weapons/genhit.ogg', 45, 1)
playsound(src.loc, 'sound/weapons/Genhit.ogg', 45, 1)
if(2)
playsound(src.loc, 'sound/effects/grillehit.ogg', 45, 1)
shake_animation(3)
@@ -188,7 +188,7 @@
to_chat(user, "\The [src] has no padding to remove.")
return
to_chat(user, "You remove the padding from \the [src].")
playsound(src, 'sound/items/wirecutter.ogg', 100, 1)
playsound(src, 'sound/items/Wirecutter.ogg', 100, 1)
painted_colour = null
remove_padding()
@@ -199,7 +199,7 @@
else
anchored = TRUE
to_chat(user, "You fasten \the [src] to the floor.")
playsound(src, 'sound/items/screwdriver.ogg', 100, 1)
playsound(src, 'sound/items/Screwdriver.ogg', 100, 1)
else if(istype(W, /obj/item/grab))
var/obj/item/grab/G = W
@@ -150,7 +150,7 @@
//Removing wire from the assembly. Step 5 undone.
if(W.iswirecutter() && !src.electronics)
playsound(src.loc, 'sound/items/wirecutter.ogg', 100, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.")
if(W.use_tool(src, user, 40, volume = 50))
@@ -168,7 +168,7 @@
else if(istype(W, /obj/item/airlock_electronics) && W:icon_state != "door_electronics_smoked")
var/obj/item/airlock_electronics/EL = W
if(!EL.is_installed)
playsound(src.loc, 'sound/items/screwdriver.ogg', 100, 1)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.")
EL.is_installed = 1
if(do_after(user, 40))
+1 -1
View File
@@ -23,7 +23,7 @@
return
to_chat(user, "<span class='notice'>You unscrew and remove the [flooring.descriptor].</span>")
make_plating(1)
playsound(src, 'sound/items/screwdriver.ogg', 80, 1)
playsound(src, 'sound/items/Screwdriver.ogg', 80, 1)
return
else if(C.iswrench() && (flooring.flags & TURF_REMOVE_WRENCH))
to_chat(user, "<span class='notice'>You unwrench and remove the [flooring.descriptor].</span>")
+3 -3
View File
@@ -125,7 +125,7 @@
var/obj/item/weldingtool/WT = W
if(WT.use(0,user))
to_chat(user, SPAN_NOTICE("You burn away the fungi with \the [WT]."))
playsound(src, 'sound/items/welder.ogg', 10, 1)
playsound(src, 'sound/items/Welder.ogg', 10, 1)
for(var/obj/effect/overlay/wallrot/WR in src)
qdel(WR)
return
@@ -175,7 +175,7 @@
if(WT.use(0,user))
to_chat(user, SPAN_NOTICE("You start repairing the damage to [src]."))
playsound(src, 'sound/items/welder.ogg', 50, 1)
playsound(src, 'sound/items/Welder.ogg', 50, 1)
if(WT.use_tool(src, user, max(5, damage / 5), volume = 50) && WT && WT.isOn())
to_chat(user, SPAN_NOTICE("You finish repairing the damage to [src]."))
take_damage(-damage)
@@ -200,7 +200,7 @@
to_chat(user, SPAN_NOTICE("You need more welding fuel to complete this task."))
return
dismantle_verb = "cutting"
dismantle_sound = 'sound/items/welder.ogg'
dismantle_sound = 'sound/items/Welder.ogg'
cut_delay *= 0.7
else if(istype(W, /obj/item/gun/energy/plasmacutter))
var/obj/item/gun/energy/plasmacutter/PC = W
+5 -5
View File
@@ -30,7 +30,7 @@
var/material/reinf_material
var/last_state
var/construction_stage
var/hitsound = 'sound/weapons/genhit.ogg'
var/hitsound = 'sound/weapons/Genhit.ogg'
var/use_set_icon_state
var/under_turf = /turf/simulated/floor/plating
@@ -84,7 +84,7 @@
burn(2500)
else if(istype(Proj,/obj/item/projectile/ion))
burn(500)
bullet_ping(Proj)
create_bullethole(Proj)
@@ -190,7 +190,7 @@
/turf/simulated/wall/proc/dismantle_wall(var/devastated, var/explode, var/no_product, var/no_change = FALSE)
if (!no_change) // No change is TRUE when this is called by destroy.
playsound(src, 'sound/items/welder.ogg', 100, 1)
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(!no_product)
if(reinf_material)
@@ -226,7 +226,7 @@
dismantle_wall(1,1)
if(3.0)
take_damage(rand(0, 250))
else
return
// Wall-rot effect, a nasty fungus that destroys walls.
@@ -271,4 +271,4 @@
D.ignite(temperature/4)
/turf/simulated/wall/is_wall()
return TRUE
return TRUE
+2 -2
View File
@@ -87,7 +87,7 @@
var/obj/item/stack/rods/R = C
if (R.use(1))
to_chat(user, "<span class='notice'>Constructing support lattice ...</span>")
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
ReplaceWithLattice()
return
@@ -98,7 +98,7 @@
if (S.get_amount() < 1)
return
qdel(L)
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
S.use(1)
ChangeTurf(/turf/simulated/floor/airless, keep_air = TRUE)
return
+1 -1
View File
@@ -125,7 +125,7 @@ var/static/list/scarySounds = list(
'sound/effects/glass_break1.ogg',
'sound/effects/glass_break2.ogg',
'sound/effects/glass_break3.ogg',
'sound/items/welder.ogg',
'sound/items/Welder.ogg',
'sound/items/welder_pry.ogg',
'sound/machines/airlock.ogg',
-6
View File
@@ -28,8 +28,6 @@
return
if("Cancel")
return
if("No")
; // do nothing
callproc_targetpicked(targetselected, target)
@@ -137,8 +135,6 @@
current = get_area(M)
if(!current)
switch(alert("\The [M] appears to not have an area; do you want to pass null instead?",, "Yes", "Cancel"))
if("Yes")
; // do nothing
if("Cancel")
return
@@ -146,8 +142,6 @@
current = holder.marked_datum
if(!current)
switch(alert("You do not currently have a marked datum; do you want to pass null instead?",, "Yes", "Cancel"))
if("Yes")
; // do nothing
if("Cancel")
return
if(!done)
+2 -3
View File
@@ -310,11 +310,10 @@ var/list/VVdynamic_lock = list(
mod_list(variable, O, original_name, objectvar)
if("restore to default")
new_var = initial(variable)
if(assoc)
L[assoc_key] = new_var
L[assoc_key] = variable
else
L[L.Find(variable)] = new_var
L[L.Find(variable)] = variable
if("edit referenced object")
modify_variables(variable)
@@ -131,9 +131,7 @@
var/vtext = ""
var/debug_type = get_debug_type(value, FALSE)
var/extra = list()
if(isnull(value))
// get_debug_type displays this
else if(istext(value))
if(istext(value))
debug_type = null // it's kinda annoying here; we can tell the type by the quotes
vtext = "\"[html_encode(value)]\""
else if(isicon(value))
+1 -1
View File
@@ -582,7 +582,7 @@ var/list/asset_datums = list()
"sovjetbox.woff" = 'html/fonts/OFL/SovjetBox.woff',
"torsha.woff" = 'html/fonts/OFL/Torsha.woff',
"web3of9ascii.woff" = 'html/fonts/OFL/Web3Of9ASCII.woff',
"zeshit.woff" = 'html/fonts/OFL/zeshit.woff',
"zeshit.woff" = 'html/fonts/OFL/Zeshit.woff',
"bilboinc.woff" = 'html/fonts/OFL/BilboINC.woff',
"fproject.woff" = 'html/fonts/OFL/FProject.woff',
"gelasio.woff" = 'html/fonts/OFL/Gelasio.woff',
-1
View File
@@ -7,7 +7,6 @@
item_flags = NOBLUDGEON
w_class = ITEMSIZE_SMALL
siemens_coefficient = 1
var/obj/machinery/computer/cargo/cargo_console = null
/obj/item/export_scanner/afterattack(obj/O, mob/user, proximity)
. = ..()
@@ -134,30 +134,30 @@
/datum/category_item/player_setup_item/general/flavor/OnTopic(var/href,var/list/href_list, var/mob/user)
if(href_list["flavor_text"])
switch(href_list["flavor_text"])
if("open")
if("general")
var/msg = sanitize(input(usr,"Give a general description of your character. This will be shown regardless of clothing.","Flavor Text",html_decode(pref.flavor_texts[href_list["flavor_text"]])) as message, extra = 0)
if(CanUseTopic(user))
pref.flavor_texts[href_list["flavor_text"]] = msg
else
var/msg = sanitize(input(usr,"Set the flavor text for your [href_list["flavor_text"]].","Flavor Text",html_decode(pref.flavor_texts[href_list["flavor_text"]])) as message, extra = 0)
if(CanUseTopic(user))
pref.flavor_texts[href_list["flavor_text"]] = msg
if(href_list["flavor_text"] != "open")
switch(href_list["flavor_text"])
if("general")
var/msg = sanitize(input(usr,"Give a general description of your character. This will be shown regardless of clothing.","Flavor Text",html_decode(pref.flavor_texts[href_list["flavor_text"]])) as message, extra = 0)
if(CanUseTopic(user))
pref.flavor_texts[href_list["flavor_text"]] = msg
else
var/msg = sanitize(input(usr,"Set the flavor text for your [href_list["flavor_text"]].","Flavor Text",html_decode(pref.flavor_texts[href_list["flavor_text"]])) as message, extra = 0)
if(CanUseTopic(user))
pref.flavor_texts[href_list["flavor_text"]] = msg
SetFlavorText(user)
return TOPIC_HANDLED
else if(href_list["flavour_text_robot"])
switch(href_list["flavour_text_robot"])
if("open")
if("Default")
var/msg = sanitize(input(usr,"Set the default flavour text for your robot. It will be used for any module without individual setting.","Flavour Text",html_decode(pref.flavour_texts_robot["Default"])) as message, extra = 0)
if(CanUseTopic(user))
pref.flavour_texts_robot[href_list["flavour_text_robot"]] = msg
else
var/msg = sanitize(input(usr,"Set the flavour text for your robot with [href_list["flavour_text_robot"]] module. If you leave this empty, default flavour text will be used for this module.","Flavour Text",html_decode(pref.flavour_texts_robot[href_list["flavour_text_robot"]])) as message, extra = 0)
if(CanUseTopic(user))
pref.flavour_texts_robot[href_list["flavour_text_robot"]] = msg
if(href_list["flavour_text_robot"] != "open")
switch(href_list["flavour_text_robot"])
if("Default")
var/msg = sanitize(input(usr,"Set the default flavour text for your robot. It will be used for any module without individual setting.","Flavour Text",html_decode(pref.flavour_texts_robot["Default"])) as message, extra = 0)
if(CanUseTopic(user))
pref.flavour_texts_robot[href_list["flavour_text_robot"]] = msg
else
var/msg = sanitize(input(usr,"Set the flavour text for your robot with [href_list["flavour_text_robot"]] module. If you leave this empty, default flavour text will be used for this module.","Flavour Text",html_decode(pref.flavour_texts_robot[href_list["flavour_text_robot"]])) as message, extra = 0)
if(CanUseTopic(user))
pref.flavour_texts_robot[href_list["flavour_text_robot"]] = msg
SetFlavourTextRobot(user)
return TOPIC_HANDLED
+1 -1
View File
@@ -465,7 +465,7 @@
update_icon()
return
playsound(src.loc, 'sound/items/wirecutter.ogg', 100, 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
user.visible_message(SPAN_WARNING("[user] cuts the fingertips off of \the [src]."),SPAN_WARNING("You cut the fingertips off of \the [src]."))
clipped = 1
@@ -277,7 +277,7 @@
var/choice = input("What component would you like to remove?") as null|anything in list(helmet,boots,tank,cooler)
if(!choice) return
playsound(src, 'sound/items/screwdriver.ogg', 50, 1)
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
if(choice == tank) //No, a switch doesn't work here. Sorry. ~Techhead
to_chat(user, "You pop \the [tank] out of \the [src]'s storage compartment.")
tank.forceMove(get_turf(src))
@@ -346,7 +346,7 @@
name = "tallit"
desc = "A tallit is a fringed garment worn as a prayer shawl by religious Jews. \
The tallit has special twined and knotted fringes known as tzitzit attached to its four corners."
icon = 'icons/clothing/accessories/tallit.dmi'
icon = 'icons/clothing/accessories/Tallit.dmi'
item_state = "tallit"
icon_state = "tallit"
contained_sprite = TRUE
+2 -2
View File
@@ -22,7 +22,7 @@
icon_state = "watch_gold"
item_state = "watch_gold"
/obj/item/clothing/wrists/watch/holo
/obj/item/clothing/wrists/watch/holo
desc = "It's a GaussIo ZeitMeister with a holographic screen."
desc_extended = "The latest Elyran technology!"
icon_state = "watch_holo"
@@ -77,7 +77,7 @@
/obj/item/clothing/wrists/watch/attackby(obj/item/W, mob/user)
if(W.isscrewdriver())
user.visible_message(SPAN_NOTICE("<b>[user]</b> [screwed ? "unscrews" : "screws"] the cover of the [src] [screwed ? "open" : "closed"]."), SPAN_NOTICE("You [screwed ? "unscrews" : "screws"] the cover of the [src] [screwed ? "open" : "closed"]."))
playsound(src.loc, 'sound/items/screwdriver.ogg', 100, 1)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
screwed = !screwed
return
if(wired)
-2
View File
@@ -268,8 +268,6 @@
switch(reagent_mix)
if (RECIPE_REAGENT_REPLACE)
//We do no transferring
if (RECIPE_REAGENT_SUM)
//Sum is easy, just shove the entire buffer into the result
buffer.trans_to_holder(holder, buffer.total_volume)
+3 -3
View File
@@ -433,7 +433,7 @@
installed_cell.forceMove(src)
update_stats()
update_icon()
playsound(src,'sound/items/wirecutter.ogg', 50, 0)
playsound(src,'sound/items/Wirecutter.ogg', 50, 0)
return TRUE
else if(istype(I,/obj/item/custom_ka_upgrade/barrels))
if(!installed_cell)
@@ -447,7 +447,7 @@
installed_barrel.forceMove(src)
update_stats()
update_icon()
playsound(src,'sound/items/wirecutter.ogg', 50, 0)
playsound(src,'sound/items/Wirecutter.ogg', 50, 0)
return TRUE
else if(istype(I,/obj/item/custom_ka_upgrade/upgrade_chips))
if(!installed_cell || !installed_barrel)
@@ -465,7 +465,7 @@
installed_upgrade_chip.forceMove(src)
update_stats()
update_icon()
playsound(src,'sound/items/wirecutter.ogg', 50, 0)
playsound(src,'sound/items/Wirecutter.ogg', 50, 0)
return TRUE
if(installed_cell)
+2 -2
View File
@@ -237,8 +237,8 @@
authenticated_account = SSeconomy.attempt_account_access(text2num(params["account_num"]), tried_pin, potential_account.security_level)
if (3) // Security level two
if (held_card)
if (text2num(params["account_num"]) != held_card.associated_account_number)
else authenticated_account = SSeconomy.attempt_account_access(tried_account_num, tried_pin, potential_account.security_level)
if (text2num(params["account_num"]) == held_card.associated_account_number)
authenticated_account = SSeconomy.attempt_account_access(tried_account_num, tried_pin, potential_account.security_level)
else to_chat(usr, SPAN_WARNING("Account not found."))
if (!authenticated_account)
number_incorrect_tries++
+2 -2
View File
@@ -243,13 +243,13 @@
key = "growl"
emote_message_3p_target = "USER growls at TARGET."
emote_message_3p = "USER growls."
emote_sound = 'sound/voice/Lizardgrowl.ogg'
emote_sound = 'sound/voice/lizardgrowl.ogg'
/singleton/emote/audible/hiss/long
key = "hiss2"
emote_message_3p_target = "USER hisses loudly at TARGET!"
emote_message_3p = "USER hisses loudly!"
emote_sound = 'sound/voice/lizardhiss2.ogg'
emote_sound = 'sound/voice/Lizardhiss2.ogg'
/singleton/emote/audible/lizard_bellow
key = "bellow"
+2 -2
View File
@@ -30,9 +30,9 @@
'sound/voice/chitter2.ogg',
'sound/effects/squelch1.ogg',
'sound/items/wrench.ogg',
'sound/items/welder.ogg',
'sound/items/Welder.ogg',
/singleton/sound_category/crowbar_sound,
'sound/items/screwdriver.ogg',
'sound/items/Screwdriver.ogg',
'sound/items/drill_use.ogg',
'sound/items/air_wrench.ogg')
@@ -129,7 +129,7 @@
if(brute_damage)
repair_brute_damage(repair_value)
to_chat(user, SPAN_NOTICE("You mend the damage to \the [src]."))
playsound(user.loc, 'sound/items/welder.ogg', 25, 1)
playsound(user.loc, 'sound/items/Welder.ogg', 25, 1)
/obj/item/mech_component/proc/repair_burn_generic(var/obj/item/stack/cable_coil/CC, var/mob/user)
if(!istype(CC))
@@ -169,7 +169,7 @@
// We're all done. Finalize the mech and pass the frame to the new system.
var/mob/living/heavy_vehicle/M = new(get_turf(src), src)
visible_message("\The [user] finishes off \the [M].")
playsound(user.loc, 'sound/items/screwdriver.ogg', 100, 1)
playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1)
arms = null
legs = null
@@ -125,7 +125,7 @@
if(user.unEquip(system))
to_chat(user, "<span class='notice'>You install \the [system] in \the [src]'s [system_hardpoint].</span>")
playsound(user.loc, 'sound/items/screwdriver.ogg', 100, 1)
playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1)
else return FALSE
var/obj/item/mecha_equipment/ME = system
if(istype(ME))
@@ -201,6 +201,6 @@
system.forceMove(get_turf(user))
user.put_in_hands(system)
to_chat(user, "<span class='notice'>You remove \the [system] in \the [src]'s [system_hardpoint].</span>")
playsound(user.loc, 'sound/items/screwdriver.ogg', 100, 1)
playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1)
return system
@@ -475,7 +475,7 @@
thing.forceMove(body)
body.cell = thing
to_chat(user, "<span class='notice'>You install \the [body.cell] into \the [src].</span>")
playsound(user.loc, 'sound/items/screwdriver.ogg', 50, 1)
playsound(user.loc, 'sound/items/Screwdriver.ogg', 50, 1)
visible_message("<span class='notice'>\The [user] installs \the [body.cell] into \the [src].</span>")
return
else if(istype(thing, /obj/item/device/robotanalyzer))
-3
View File
@@ -57,9 +57,6 @@
var/obj/item/mech_component/sensors/head
var/obj/item/mech_component/chassis/body
// Invisible components.
var/datum/effect/effect/system/spark_spread/sparks
// Equipment tracking vars.
var/obj/item/mecha_equipment/selected_system
var/selected_hardpoint
@@ -284,7 +284,7 @@
if (prob(5))
die_off()
return
else
return
/obj/effect/plant/proc/check_health()
+1 -1
View File
@@ -83,7 +83,7 @@
b.forceMove(get_turf(src))
qdel(src)
return
else
return
/obj/structure/bookcase/update_icon()
-78
View File
@@ -187,62 +187,6 @@
qdel(areas)
..()
/*
Savefile format:
map
id
x // size, not coords
y
z
areas // list of areas, not including default
[each z; 1 to depth]
[each y; 1 to height]
[each x; 1 to width]
type // of turf
AREA // if non-default; saved as a number (index into areas list)
vars // all other changed vars
*/
/swapmap/Write(savefile/S)
var/x
var/y
var/z
var/n
var/list/areas
var/area/defarea=locate(world.area)
if(!defarea) defarea=new world.area
areas=list()
for(var/turf/T in block(locate(x1,y1,z1),locate(x2,y2,z2)))
areas[T.loc]=null
for(n in areas) // quickly eliminate associations for smaller storage
areas-=n
areas+=n
areas-=defarea
InitializeSwapMaps()
locked=1
S["id"] << id
S["z"] << z2-z1+1
S["y"] << y2-y1+1
S["x"] << x2-x1+1
S["areas"] << areas
for(n in 1 to areas.len) areas[areas[n]]=n
var/oldcd=S.cd
for(z=z1,z<=z2,++z)
S.cd="[z-z1+1]"
for(y=y1,y<=y2,++y)
S.cd="[y-y1+1]"
for(x=x1,x<=x2,++x)
S.cd="[x-x1+1]"
var/turf/T=locate(x,y,z)
S["type"] << T.type
if(T.loc!=defarea) S["AREA"] << areas[T.loc]
T.Write(S)
S.cd=".."
S.cd=".."
sleep()
S.cd=oldcd
locked=0
qdel(areas)
/swapmap/Read(savefile/S,_id,turf/locorner)
var/x
var/y
@@ -453,28 +397,6 @@
/swapmap/proc/BuildInTurfs(list/turfs,item)
for(var/T in turfs) new item(T)
/atom/Write(savefile/S)
for(var/V in vars-"x"-"y"-"z"-"contents"-"icon"-"overlays"-"underlays")
if(issaved(vars[V]))
if(vars[V]!=initial(vars[V])) S[V]<<vars[V]
else S.dir.Remove(V)
if(icon!=initial(icon))
if(swapmaps_iconcache && swapmaps_iconcache[icon])
S["icon"]<<swapmaps_iconcache[icon]
else S["icon"]<<icon
// do not save mobs with keys; do save other mobs
var/mob/M
for(M in src) if(M.key) break
if(overlays.len) S["overlays"]<<overlays
if(underlays.len) S["underlays"]<<underlays
if(contents.len && !isarea(src))
var/list/l=contents
if(M)
l=l.Copy()
for(M in src) if(M.key) l-=M
if(l.len) S["contents"]<<l
if(l!=contents) qdel(l)
/atom/Read(savefile/S)
var/list/l
if(contents.len) l=contents
+1 -1
View File
@@ -89,7 +89,7 @@
// Noise made when a simple door made of this material opens or closes.
var/dooropen_noise = 'sound/effects/stonedoor_openclose.ogg'
// Noise made when you hit structure made of this material.
var/hitsound = 'sound/weapons/genhit.ogg'
var/hitsound = 'sound/weapons/Genhit.ogg'
// Path to resulting stacktype. Todo remove need for this.
var/stack_type
// Wallrot crumble message.
+1 -2
View File
@@ -172,8 +172,7 @@ var/global/list/minevendor_list = list( //keep in order of price
return
if(prize.amount <= 0 && prize.amount != -1)
return
if(prize.cost > ID.mining_points)
else
if(prize.cost <= ID.mining_points)
if(prize.shuttle)
if(SScargo.order_mining(prize.equipment_path))
ID.mining_points -= prize.cost
+1 -1
View File
@@ -1208,7 +1208,7 @@ var/list/total_extraction_beacons = list()
user.visible_message(SPAN_NOTICE("\The [user] begins sculpting."), SPAN_NOTICE("You begin sculpting."))
if(prob(25))
playsound(loc, 'sound/items/screwdriver.ogg', 20, TRUE)
playsound(loc, 'sound/items/Screwdriver.ogg', 20, TRUE)
else
playsound(loc, /singleton/sound_category/pickaxe_sound, 20, TRUE)
+2 -2
View File
@@ -710,7 +710,7 @@ var/list/asteroid_floor_smooth = list(
var/obj/item/stack/rods/R = W
if(R.use(1))
to_chat(user, SPAN_NOTICE("Constructing support lattice..."))
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
ReplaceWithLattice()
return
@@ -721,7 +721,7 @@ var/list/asteroid_floor_smooth = list(
if(S.get_amount() < 1)
return
qdel(L)
playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
playsound(src, 'sound/weapons/Genhit.ogg', 50, TRUE)
S.use(1)
ChangeTurf(/turf/simulated/floor/airless)
return
@@ -12,7 +12,7 @@
invisibility = INVISIBILITY_OBSERVER
simulated = FALSE
var/can_reenter_corpse
var/datum/hud/living/carbon/hud = null // hud
var/datum/hud/hud = null // hud
var/bootime = 0
var/started_as_observer //This variable is set to 1 when you enter the game as an observer.
//If you died in the game and are a ghsot - this will remain as null.
+6 -5
View File
@@ -235,11 +235,12 @@
if("whisper")
whisper(message, speaking, is_singing)
return TRUE
else if(message_mode)
var/obj/item/device/radio/R = get_radio()
if(R)
used_radios += R
R.talk_into(src, message, message_mode, verb, speaking)
else
if(message_mode)
var/obj/item/device/radio/R = get_radio()
if(R)
used_radios += R
R.talk_into(src, message, message_mode, verb, speaking)
/mob/living/carbon/human/handle_speech_sound()
var/list/returns = ..()
@@ -236,7 +236,7 @@
attack_verb = list("scorched", "burned")
attack_noun = list("flaming fist")
damage = 10
attack_sound = 'sound/items/welder.ogg'
attack_sound = 'sound/items/Welder.ogg'
attack_name = "flaming touch"
damage_type = DAMAGE_BURN
@@ -289,4 +289,4 @@
user.visible_message(SPAN_DANGER("\The [user] crackles with energy!"))
if(iscarbon(target))
var/mob/living/carbon/L = target
L.electrocute_act(20,user, 1, user.zone_sel.selecting)
L.electrocute_act(20,user, 1, user.zone_sel.selecting)
@@ -816,7 +816,7 @@ var/global/list/golem_types = list(SPECIES_GOLEM_COAL,
death_message = "collapses into a pile of flesh!"
death_message_range = 7
death_sound = 'sound/magic/disintegrate.ogg'
death_sound = 'sound/magic/Disintegrate.ogg'
golem_designation = "Flesh"
+1 -2
View File
@@ -589,8 +589,7 @@ default behaviour is:
if (!restrained())
var/diag = get_dir(src, pulling)
if ((diag - 1) & diag)
else
if (!((diag - 1) & diag))
diag = null
if ((get_dist(src, pulling) > 1 || diag))
if (isliving(pulling))
+4 -4
View File
@@ -5,14 +5,14 @@
var/mob/living/silicon/ai/user = src
// Setup Variables
malfunctioning = 1
research = new/datum/malf_research()
research = /datum/malf_research
research.owner = src
hacked_apcs = list()
recalc_cpu()
add_verb(src, new/datum/game_mode/malfunction/verb/ai_select_hardware())
add_verb(src, new/datum/game_mode/malfunction/verb/ai_select_research())
add_verb(src, new/datum/game_mode/malfunction/verb/ai_help())
add_verb(src, /datum/game_mode/malfunction/verb/ai_select_hardware)
add_verb(src, /datum/game_mode/malfunction/verb/ai_select_research)
add_verb(src, /datum/game_mode/malfunction/verb/ai_help)
// And greet user with some OOC info.
to_chat(user, "You are malfunctioning, you do not have to follow any laws.")

Some files were not shown because too many files have changed in this diff Show More