diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm
index 33a0ee88e0d..38bfc027bd5 100644
--- a/code/controllers/emergency_shuttle_controller.dm
+++ b/code/controllers/emergency_shuttle_controller.dm
@@ -48,7 +48,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
if (evac)
emergency_shuttle_docked.Announce("The Emergency Shuttle has docked with the station at docks one and two. You have approximately [round(estimate_launch_time()/60,1)] minutes to board the Emergency Shuttle.")
else
- priority_announcement.Announce("The scheduled shuttle to the Vir Interstellar Spaceport has docked with the station at docks one and two. It will depart in approximately [round(emergency_shuttle.estimate_launch_time()/60,1)] minutes.")
+ priority_announcement.Announce("The scheduled shuttle to the [dock_name] has docked with the station at docks one and two. It will depart in approximately [round(emergency_shuttle.estimate_launch_time()/60,1)] minutes.")
//arm the escape pods
if (evac)
@@ -94,7 +94,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
//reset the shuttle transit time if we need to
shuttle.move_time = SHUTTLE_TRANSIT_DURATION
- priority_announcement.Announce("The regularly scheduled shuttle to the Vir Interstellar Spaceport will arrive in in approximately [round(estimate_arrival_time()/60)] minutes. Those leaving should proceed to docks one and two.")
+ priority_announcement.Announce("The regularly scheduled shuttle to the [dock_name] will arrive in in approximately [round(estimate_arrival_time()/60)] minutes. Those leaving should proceed to docks one and two.")
//recalls the shuttle
/datum/emergency_shuttle_controller/proc/recall()
diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm
index df85773fb2e..cd3618c9366 100644
--- a/code/game/objects/effects/decals/contraband.dm
+++ b/code/game/objects/effects/decals/contraband.dm
@@ -33,7 +33,7 @@
if (!iswall(W) || !isturf(user.loc))
user << "You can't place this here!"
return
-
+
var/placement_dir = get_dir(user, W)
if (!(placement_dir in cardinal))
user << "You must stand directly in front of the wall you wish to place that on."
@@ -43,7 +43,7 @@
var/stuff_on_wall = 0
if (locate(/obj/structure/sign/poster) in W)
stuff_on_wall = 1
-
+
//crude, but will cover most cases. We could do stuff like check pixel_x/y but it's not really worth it.
for (var/dir in cardinal)
var/turf/T = get_step(W, dir)
@@ -61,7 +61,7 @@
flick("poster_being_set", P)
//playsound(W, 'sound/items/poster_being_created.ogg', 100, 1) //why the hell does placing a poster make printer sounds?
-
+
var/oldsrc = src //get a reference to src so we can delete it after detaching ourselves
src = null
spawn(17)
@@ -71,7 +71,7 @@
user << "You place the poster!"
else
P.roll_and_drop(P.loc)
-
+
qdel(oldsrc) //delete it now to cut down on sanity checks afterwards. Agouri's code supports rerolling it anyway
//############################## THE ACTUAL DECALS ###########################
@@ -90,11 +90,11 @@
if(!serial)
serial = rand(1, poster_designs.len) //use a random serial if none is given
-
+
serial_number = serial
var/datum/poster/design = poster_designs[serial_number]
set_poster(design)
-
+
switch (placement_dir)
if (NORTH)
pixel_x = 0
@@ -133,23 +133,23 @@
/obj/structure/sign/poster/attack_hand(mob/user as mob)
+
if(ruined)
return
- var/temp_loc = user.loc
- switch(alert("Do I want to rip the poster from the wall?","You think...","Yes","No"))
- if("Yes")
- if(user.loc != temp_loc)
- return
- visible_message("[user] rips [src] in a single, decisive motion!" )
- playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1)
- ruined = 1
- icon_state = "poster_ripped"
- name = "ripped poster"
- desc = "You can't make out anything from the poster's original print. It's ruined."
- add_fingerprint(user)
- if("No")
+
+ if(alert("Do I want to rip the poster from the wall?","You think...","Yes","No") == "Yes")
+
+ if(ruined || !user.Adjacent(src))
return
+ visible_message("[user] rips [src] in a single, decisive motion!" )
+ playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1)
+ ruined = 1
+ icon_state = "poster_ripped"
+ name = "ripped poster"
+ desc = "You can't make out anything from the poster's original print. It's ruined."
+ add_fingerprint(user)
+
/obj/structure/sign/poster/proc/roll_and_drop(turf/newloc)
var/obj/item/weapon/contraband/poster/P = new(src, serial_number)
P.loc = newloc
diff --git a/code/game/objects/items/weapons/material/kitchen.dm b/code/game/objects/items/weapons/material/kitchen.dm
index f256e382233..0034ddb60b1 100644
--- a/code/game/objects/items/weapons/material/kitchen.dm
+++ b/code/game/objects/items/weapons/material/kitchen.dm
@@ -14,6 +14,7 @@
force_divisor = 0.1 // 6 when wielded with hardness 60 (steel)
thrown_force_divisor = 0.25 // 5 when thrown with weight 20 (steel)
var/loaded //Descriptive string for currently loaded food object.
+ var/scoop_food = 1
/obj/item/weapon/material/kitchen/utensil/New()
..()
@@ -74,6 +75,7 @@
desc = "A knife for eating with. Can cut through any food."
icon_state = "knife"
force_divisor = 0.1 // 6 when wielded with hardness 60 (steel)
+ scoop_food = 0
// Identical to the tactical knife but nowhere near as stabby.
// Kind of like the toy esword compared to the real thing.
diff --git a/code/global.dm b/code/global.dm
index daa26e30dee..7a9366c3b30 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -27,6 +27,7 @@ var/diary = null
var/href_logfile = null
var/station_name = "Northern Star"
var/station_short = "Northern Star"
+var/const/dock_name = "Vir Interstellar Spaceport"
var/const/boss_name = "Central Command"
var/const/boss_short = "Centcomm"
var/const/company_name = "NanoTrasen"
diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm
index f496c82e67f..c8474871a75 100644
--- a/code/modules/mob/language/language.dm
+++ b/code/modules/mob/language/language.dm
@@ -5,19 +5,19 @@
*/
/datum/language
- var/name = "an unknown language" // Fluff name of language if any.
- var/desc = "A language." // Short description for 'Check Languages'.
- var/speech_verb = "says" // 'says', 'hisses', 'farts'.
- var/ask_verb = "asks" // Used when sentence ends in a ?
- var/exclaim_verb = "exclaims" // Used when sentence ends in a !
- var/whisper_verb // Optional. When not specified speech_verb + quietly/softly is used instead.
- var/signlang_verb = list() // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags
- var/colour = "body" // CSS style to use for strings in this language.
- var/key = "x" // Character used to speak in language eg. :o for Unathi.
- var/flags = 0 // Various language flags.
- var/native // If set, non-native speakers will have trouble speaking.
- var/list/syllables // Used when scrambling text for a non-speaker.
- var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string
+ var/name = "an unknown language" // Fluff name of language if any.
+ var/desc = "A language." // Short description for 'Check Languages'.
+ var/speech_verb = "says" // 'says', 'hisses', 'farts'.
+ var/ask_verb = "asks" // Used when sentence ends in a ?
+ var/exclaim_verb = "exclaims" // Used when sentence ends in a !
+ var/whisper_verb = "whispers" // Optional. When not specified speech_verb + quietly/softly is used instead.
+ var/signlang_verb = list("signs") // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags
+ var/colour = "body" // CSS style to use for strings in this language.
+ var/key = "x" // Character used to speak in language eg. :o for Unathi.
+ var/flags = 0 // Various language flags.
+ var/native // If set, non-native speakers will have trouble speaking.
+ var/list/syllables // Used when scrambling text for a non-speaker.
+ var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4, syllable_divisor=2)
if(!syllables || !syllables.len)
diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm
index 3b55dc1dda3..ffcb3f32e16 100644
--- a/code/modules/organs/organ_icon.dm
+++ b/code/modules/organs/organ_icon.dm
@@ -89,15 +89,20 @@ var/global/list/limb_icon_cache = list()
/obj/item/organ/external/proc/get_icon(var/skeletal)
- var/gender
+ var/gender = "f"
+ if(owner && owner.gender == MALE)
+ gender = "m"
+
if(force_icon)
- mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_f" : ""]")
+ mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]")
else
if(!dna)
- mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_f" : ""]")
+ mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]")
else
- if(gendered_icon)
+ if(!gendered_icon)
+ gender = null
+ else
if(dna.GetUIState(DNA_UI_GENDER))
gender = "f"
else
diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm
index 140c296ae0a..3636c3acfaa 100644
--- a/code/modules/power/terminal.dm
+++ b/code/modules/power/terminal.dm
@@ -30,7 +30,7 @@
invisibility = i ? 101 : 0
icon_state = i ? "term-f" : "term"
-/obj/structure/power/terminal/hides_under_flooring()
+/obj/machinery/power/terminal/hides_under_flooring()
return 1
// Needed so terminals are not removed from machines list.
diff --git a/code/modules/projectiles/targeting/targeting_mob.dm b/code/modules/projectiles/targeting/targeting_mob.dm
index a89bbc2c9a5..765b59b4782 100644
--- a/code/modules/projectiles/targeting/targeting_mob.dm
+++ b/code/modules/projectiles/targeting/targeting_mob.dm
@@ -1,6 +1,20 @@
/mob/living/var/obj/aiming_overlay/aiming
/mob/living/var/list/aimed = list()
+/mob/verb/toggle_gun_mode()
+ set name = "Toggle Gun Mode"
+ set desc = "Begin or stop aiming."
+ set category = "IC"
+
+ if(isliving(src))
+ var/mob/living/M = src
+ if(!M.aiming)
+ M.aiming = new(src)
+ M.aiming.toggle_active()
+ else
+ src << "This verb may only be used by living mobs, sorry."
+ return
+
/mob/living/proc/stop_aiming(var/obj/item/thing, var/no_message = 0)
if(!aiming)
aiming = new(src)
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index 48a0b9eb7c7..a5c820d96b5 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -128,32 +128,32 @@
// Eating with forks
if(istype(W,/obj/item/weapon/material/kitchen/utensil))
var/obj/item/weapon/material/kitchen/utensil/U = W
+ if(U.scoop_food)
+ if(!U.reagents)
+ U.create_reagents(5)
- if(!U.reagents)
- U.create_reagents(5)
+ if (U.reagents.total_volume > 0)
+ user << "\red You already have something on your [U]."
+ return
- if (U.reagents.total_volume > 0)
- user << "\red You already have something on your [U]."
+ user.visible_message( \
+ "[user] scoops up some [src] with \the [U]!", \
+ "\blue You scoop up some [src] with \the [U]!" \
+ )
+
+ src.bitecount++
+ U.overlays.Cut()
+ U.loaded = "[src]"
+ var/image/I = new(U.icon, "loadedfood")
+ I.color = src.filling_color
+ U.overlays += I
+
+ reagents.trans_to_obj(U, min(reagents.total_volume,5))
+
+ if (reagents.total_volume <= 0)
+ qdel(src)
return
- user.visible_message( \
- "[user] scoops up some [src] with \the [U]!", \
- "\blue You scoop up some [src] with \the [U]!" \
- )
-
- src.bitecount++
- U.overlays.Cut()
- U.loaded = "[src]"
- var/image/I = new(U.icon, "loadedfood")
- I.color = src.filling_color
- U.overlays += I
-
- reagents.trans_to_obj(U, min(reagents.total_volume,5))
-
- if (reagents.total_volume <= 0)
- qdel(src)
- return
-
if (is_sliceable())
//these are used to allow hiding edge items in food that is not on a table/tray
var/can_slice_here = isturf(src.loc) && ((locate(/obj/structure/table) in src.loc) || (locate(/obj/machinery/optable) in src.loc) || (locate(/obj/item/weapon/tray) in src.loc))
diff --git a/code/modules/shuttles/shuttle_emergency.dm b/code/modules/shuttles/shuttle_emergency.dm
index c6d7996fc9d..c468bbb0170 100644
--- a/code/modules/shuttles/shuttle_emergency.dm
+++ b/code/modules/shuttles/shuttle_emergency.dm
@@ -28,9 +28,9 @@
emergency_shuttle.departed = 1
if (emergency_shuttle.evac)
- priority_announcement.Announce("The Emergency Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at [boss_name].")
+ priority_announcement.Announce("The Emergency Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at [dock_name].")
else
- priority_announcement.Announce("The Scheduled Transfer Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at [boss_name].")
+ priority_announcement.Announce("The Scheduled Transfer Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at [dock_name].")
/datum/shuttle/ferry/emergency/can_launch(var/user)
if (istype(user, /obj/machinery/computer/shuttle_control/emergency))
@@ -185,7 +185,7 @@
else if (!shuttle.location)
shuttle_status = "Standing-by at [station_name]."
else
- shuttle_status = "Standing-by at [boss_name]."
+ shuttle_status = "Standing-by at [dock_name]."
if(WAIT_LAUNCH, FORCE_LAUNCH)
shuttle_status = "Shuttle has recieved command and will depart shortly."
if(WAIT_ARRIVE)
diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm
index 6f619e1cce5..16cc1376544 100644
--- a/code/modules/spells/spellbook.dm
+++ b/code/modules/spells/spellbook.dm
@@ -64,9 +64,6 @@
Powerful items imbued with eldritch magics. Summoning one will count towards your maximum number of spells.
It is recommended that only experienced wizards attempt to wield such artefacts.