mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-26 14:31:59 +01:00
Merge branch 'master' into updates_the_nbt
# Conflicts: # code/__defines/misc.dm # code/game/machinery/machinery.dm # maps/_common/mapsystem/map.dm
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
if(!obfuscation)
|
||||
obfuscation = image(icon, T, icon_state)
|
||||
obfuscation.layer = OBFUSCATION_LAYER
|
||||
obfuscation.plane = PLANE_DEFAULT
|
||||
if(!obfuscation_underlay)
|
||||
// Creating a new icon of a fairly common icon state, adding some random color to prevent address searching, and hoping being static kills memory locality
|
||||
var/turf/floor = /turf/simulated/floor/tiled
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
announce_ghost_joinleave(src)
|
||||
var/mob/living/carbon/human/dummy/mannequin/mannequin = new
|
||||
client.prefs.dress_preview_mob(mannequin)
|
||||
observer.appearance = mannequin
|
||||
observer.appearance = mannequin.appearance
|
||||
observer.appearance_flags = KEEP_TOGETHER
|
||||
observer.alpha = 127
|
||||
observer.layer = initial(observer.layer)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/list/ask_verb = list("asks") // Used when sentence ends in a ?
|
||||
var/list/exclaim_verb = list("exclaims") // Used when sentence ends in a !
|
||||
var/list/shout_verb = list("shouts", "yells", "screams") //Used when a sentence ends in !!
|
||||
var/list/whisper_verb = list("says quietly", "says softly", "whispers") // Optional. When not specified speech_verb + quietly/softly is used instead.
|
||||
var/list/whisper_verb = null // Optional. When not specified speech_verb + quietly/softly is used instead.
|
||||
var/list/signlang_verb = list("signs") // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags
|
||||
var/list/sing_verb = list("sings")
|
||||
var/list/sign_adv_length = list(" briefly", " a short message", " a message", " a lengthy message", " a very lengthy message") // 5 messages changing depending on the length of the signed language. A space should be added before the sentence as shown
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/mob/living/carbon/alien/diona/confirm_evolution()
|
||||
var/response = alert(src, "A worker gestalt is a large, slow, and durable humanoid form. You will lose the ability to ventcrawl and devour animals, but you will gain hand-like tendrils and the ability to wear things. You have enough biomass, are you certain you're ready to form a new gestalt?", "Confirm Gestalt", "Growth!", "Patience...")
|
||||
var/response = alert(src, "Are you sure you wish to grow into a gestalt? Instead of being an individual nymph you'll become a group of them, for formed together to work as a more humanoid entity. As a gestalt you'll have hands and the ability to do most actions humans can such as opening doors and using tools, but you'll be unable to ventcrawl. If you've not already done so it's highly suggested you read over some of the dionae wiki to get a better understanding of the species before advancing further.", "Confirm Gestalt", "Growth!", "Patience...")
|
||||
if(response != "Growth!")
|
||||
return
|
||||
|
||||
@@ -89,4 +89,4 @@
|
||||
to_chat(src, SPAN_WARNING("You didn't have enough biomass to grow your [O.name]!"))
|
||||
O.droplimb(1, DROPLIMB_EDGE)
|
||||
qdel(O)
|
||||
limbs_to_remove -= 1
|
||||
limbs_to_remove -= 1
|
||||
|
||||
@@ -1295,6 +1295,7 @@
|
||||
if(clean_feet && !shoes)
|
||||
footprint_color = null
|
||||
feet_blood_DNA = null
|
||||
track_footprint = 0
|
||||
update_inv_shoes(1)
|
||||
|
||||
if(blood_color)
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
return headsets[headsets[1]]
|
||||
return null
|
||||
|
||||
/mob/living/carbon/human/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper)
|
||||
/mob/living/carbon/human/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper, var/is_singing = FALSE)
|
||||
if(!whisper && (paralysis || InStasis()))
|
||||
whisper(message, speaking)
|
||||
return TRUE
|
||||
@@ -218,12 +218,12 @@
|
||||
if(R.talk_into(src,message,null,verb,speaking))
|
||||
successful_radio += R
|
||||
if("whisper")
|
||||
whisper(message, speaking)
|
||||
whisper(message, speaking, is_singing)
|
||||
return TRUE
|
||||
else if(message_mode)
|
||||
var/obj/item/device/radio/R = get_radio()
|
||||
if(R)
|
||||
used_radios += l_ear
|
||||
used_radios += R
|
||||
if(R.talk_into(src, message, message_mode, verb, speaking))
|
||||
successful_radio += R
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
max_hydration_factor = -1
|
||||
|
||||
allowed_citizenships = list(CITIZENSHIP_BIESEL, CITIZENSHIP_JARGON, CITIZENSHIP_SOL, CITIZENSHIP_COALITION, CITIZENSHIP_DOMINIA, CITIZENSHIP_IZWESKI, CITIZENSHIP_EUM, CITIZENSHIP_NONE)
|
||||
allowed_religions = list(RELIGION_QEBLAK, RELIGION_WEISHII, RELIGION_MOROZ, RELIGION_THAKH, RELIGION_SKAKH, RELIGION_ETERNAL, RELIGION_NONE, RELIGION_OTHER)
|
||||
allowed_religions = list(RELIGION_QEBLAK, RELIGION_WEISHII, RELIGION_MOROZ, RELIGION_THAKH, RELIGION_SKAKH, RELIGION_ETERNAL, RELIGION_KSSHR, RELIGION_SHRKH, RELIGION_NONE, RELIGION_OTHER)
|
||||
|
||||
allowed_accents = list(ACCENT_ROOTSONG, ACCENT_VOIDSONG)
|
||||
default_accent = ACCENT_ROOTSONG
|
||||
|
||||
@@ -21,7 +21,12 @@
|
||||
hazard_low_pressure = 10
|
||||
|
||||
examine_color = "#C2AE95"
|
||||
allowed_accents = list(ACCENT_SCARAB, ACCENT_CETI, ACCENT_GIBSON, ACCENT_SOL, ACCENT_MARTIAN, ACCENT_JUPITER, ACCENT_COC, ACCENT_ELYRA, ACCENT_PERSEPOLIS, ACCENT_MEDINA, ACCENT_AEMAQ, ACCENT_NEWSUEZ, ACCENT_DAMASCUS, ACCENT_ERIDANI, ACCENT_ERIDANIREINSTATED, ACCENT_HIMEO, ACCENT_ERIDANIDREG, ACCENT_DOMINIA_HIGH, ACCENT_DOMINIA_VULGAR, ACCENT_NCF, ACCENT_ASSUNZIONE, ACCENT_VALKYRIE)
|
||||
|
||||
/datum/species/human/offworlder/New()
|
||||
var/list/offworlder_accents = list(ACCENT_SCARAB)
|
||||
var/list/disallowed_accents = list(ACCENT_SILVERSUN_EXPATRIATE, ACCENT_SILVERSUN_ORIGINAL, ACCENT_PLUTO, ACCENT_EUROPA, ACCENT_VENUS, ACCENT_VENUSJIN, ACCENT_GADPATHUR, ACCENT_PHONG, ACCENT_VYSOKA, ACCENT_FISANDUH, ACCENT_MICTLAN, ACCENT_KONYAN, ACCENT_VISEGRAD)
|
||||
allowed_accents = offworlder_accents + allowed_accents - disallowed_accents
|
||||
..()
|
||||
|
||||
/datum/species/human/offworlder/equip_later_gear(var/mob/living/carbon/human/H)
|
||||
if(istype(H.get_equipped_item(slot_back), /obj/item/storage/backpack) && H.equip_to_slot_or_del(new /obj/item/storage/pill_bottle/rmt(H.back), slot_in_backpack))
|
||||
|
||||
@@ -211,7 +211,7 @@
|
||||
eyes_icons = 'icons/mob/human_face/eyes48x48.dmi'
|
||||
eyes = "bulwark_eyes"
|
||||
|
||||
slowdown = 6
|
||||
slowdown = 2
|
||||
|
||||
unarmed_types = list(/datum/unarmed_attack/claws/vaurca_bulwark)
|
||||
|
||||
@@ -240,6 +240,7 @@ Bulwarks are much larger and have significantly thicker carapaces than most Vaur
|
||||
heat_level_3 = 800 //Default 1000
|
||||
|
||||
sprint_speed_factor = 1.4
|
||||
stamina = 50
|
||||
|
||||
/datum/species/bug/type_e/New()
|
||||
..()
|
||||
|
||||
@@ -10,29 +10,16 @@
|
||||
|
||||
//mob verbs are faster than object verbs. See above.
|
||||
var/mob/living/next_point_time = 0
|
||||
/mob/living/pointed(atom/movable/A as mob|obj|turf in view())
|
||||
if(!isturf(src.loc) || !(A in range(world.view, get_turf(src))))
|
||||
return FALSE
|
||||
/mob/living/pointed(atom/A as mob|obj|turf in view())
|
||||
if(src.stat || !src.canmove || src.restrained())
|
||||
return FALSE
|
||||
if(src.status_flags & FAKEDEATH)
|
||||
return FALSE
|
||||
if(next_point_time >= world.time)
|
||||
return FALSE
|
||||
|
||||
. = ..()
|
||||
|
||||
next_point_time = world.time + 25
|
||||
face_atom(A)
|
||||
if(isturf(A))
|
||||
if(pointing_effect)
|
||||
QDEL_NULL(pointing_effect)
|
||||
pointing_effect = new /obj/effect/decal/point(A)
|
||||
pointing_effect.invisibility = invisibility
|
||||
addtimer(CALLBACK(GLOBAL_PROC, /proc/qdel, pointing_effect), 2 SECONDS)
|
||||
else
|
||||
A.add_filter("pointglow", 1, list(type = "drop_shadow", x = 0, y = -1, offset = 1, size = 1, color = "#F00"))
|
||||
addtimer(CALLBACK(A, /atom/movable.proc/remove_filter, "pointglow"), 2 SECONDS)
|
||||
visible_message("<b>\The [src]</b> points to \the [A].")
|
||||
return TRUE
|
||||
if(.)
|
||||
visible_message("<b>\The [src]</b> points to \the [A].")
|
||||
|
||||
/*one proc, four uses
|
||||
swapping: if it's 1, the mobs are trying to switch, if 0, non-passive is pushing passive
|
||||
|
||||
@@ -156,7 +156,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
return FONT_SIZE_LARGE
|
||||
return null
|
||||
|
||||
/mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE)
|
||||
/mob/living/say(var/message, var/datum/language/speaking = null, var/verb, var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE)
|
||||
if(stat)
|
||||
if(stat == DEAD)
|
||||
return say_dead(message)
|
||||
@@ -209,8 +209,9 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
return
|
||||
speaking.broadcast(src,trim(message))
|
||||
return 1
|
||||
|
||||
verb = say_quote(message, speaking, is_singing, whisper)
|
||||
|
||||
if(!verb)
|
||||
verb = say_quote(message, speaking, is_singing, whisper)
|
||||
|
||||
if(is_muzzled())
|
||||
to_chat(src, "<span class='danger'>You're muzzled and cannot speak!</span>")
|
||||
@@ -245,7 +246,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
|
||||
var/list/obj/item/used_radios = new
|
||||
var/list/successful_radio = new // passes a list because standard vars don't work when passed
|
||||
if(handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper))
|
||||
if(handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper, is_singing))
|
||||
return 1
|
||||
|
||||
var/list/handle_v = handle_speech_sound()
|
||||
|
||||
@@ -76,18 +76,6 @@
|
||||
if (!movement_target)
|
||||
walk_to(src,0)
|
||||
|
||||
if(prob(2)) //spooky
|
||||
var/mob/abstract/observer/spook = locate() in range(src,5)
|
||||
if(spook)
|
||||
var/turf/T = spook.loc
|
||||
var/list/visible = list()
|
||||
for(var/obj/O in T.contents)
|
||||
if(!O.invisibility && O.name)
|
||||
visible += O
|
||||
if(visible.len)
|
||||
var/atom/A = pick(visible)
|
||||
visible_emote("suddenly stops and stares at something unseen[istype(A) ? " near [A]":""].",0)
|
||||
|
||||
/mob/living/simple_animal/cat/proc/attack_mice()
|
||||
if((src.loc) && isturf(src.loc))
|
||||
if(!stat && !resting && !buckled_to)
|
||||
|
||||
@@ -276,14 +276,12 @@
|
||||
. =..()
|
||||
if(!.)
|
||||
return
|
||||
if(!stat && prob(3) && eggsleft > 0)
|
||||
if(!stat && prob(3) && eggsleft > 0 && chicken_count < MAX_CHICKENS)
|
||||
visible_message("[src] [pick("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")]")
|
||||
eggsleft--
|
||||
var/obj/item/reagent_containers/food/snacks/egg/E = new(get_turf(src))
|
||||
E.pixel_x = rand(-6,6)
|
||||
E.pixel_y = rand(-6,6)
|
||||
if(chicken_count < MAX_CHICKENS && prob(10))
|
||||
START_PROCESSING(SSprocessing, E)
|
||||
|
||||
// Penguins
|
||||
|
||||
|
||||
@@ -16,13 +16,24 @@
|
||||
|
||||
whisper(message)
|
||||
|
||||
/mob/living/proc/whisper(var/message, var/datum/language/speaking)
|
||||
/mob/living/proc/whisper(var/message, var/datum/language/speaking, var/is_singing = FALSE)
|
||||
if(is_muzzled())
|
||||
to_chat(src, SPAN_DANGER("You're muzzled and cannot speak!"))
|
||||
return
|
||||
|
||||
var/had_speaking = !!speaking
|
||||
speaking = speaking ? speaking : parse_language(message)
|
||||
|
||||
if(!had_speaking)
|
||||
if(speaking)
|
||||
message = copytext(message,2+length(speaking.key))
|
||||
else
|
||||
speaking = get_default_language()
|
||||
|
||||
if(length(message) >= 1 && copytext(message, 1, 2) == "%")
|
||||
if(speaking?.sing_verb)
|
||||
is_singing = TRUE
|
||||
|
||||
var/message_range = 1
|
||||
var/eavesdropping_range = 2
|
||||
var/watching_range = 5
|
||||
@@ -35,8 +46,11 @@
|
||||
not_heard = "[whisper_text] something"
|
||||
else
|
||||
var/adverb = pick("quietly", "softly")
|
||||
whisper_text = "[speaking.speech_verb] [adverb]"
|
||||
not_heard = "[speaking.speech_verb] something [adverb]"
|
||||
var/speak_text = pick(speaking.speech_verb)
|
||||
if(is_singing && speaking?.sing_verb)
|
||||
speak_text = pick(speaking.sing_verb)
|
||||
whisper_text = "[speak_text] [adverb]"
|
||||
not_heard = "[speak_text] something [adverb]"
|
||||
|
||||
var/list/listening = list(src)
|
||||
|
||||
|
||||
+19
-13
@@ -333,21 +333,27 @@
|
||||
set name = "Point To"
|
||||
set category = "Object"
|
||||
|
||||
if(!src || !isturf(src.loc) || !(A in range(world.view, get_turf(src))))
|
||||
return 0
|
||||
if(istype(A, /obj/effect/decal/point) || pointing_effect)
|
||||
return 0
|
||||
|
||||
var/tile = get_turf(A)
|
||||
if (!tile)
|
||||
return 0
|
||||
|
||||
pointing_effect = new /obj/effect/decal/point(tile)
|
||||
pointing_effect.invisibility = invisibility
|
||||
addtimer(CALLBACK(GLOBAL_PROC, /proc/qdel, pointing_effect), 2 SECONDS)
|
||||
if(!isturf(src.loc) || !(A in range(world.view, get_turf(src))))
|
||||
return FALSE
|
||||
if(next_point_time >= world.time)
|
||||
return FALSE
|
||||
|
||||
next_point_time = world.time + 25
|
||||
face_atom(A)
|
||||
return 1
|
||||
if(isturf(A))
|
||||
if(pointing_effect)
|
||||
end_pointing_effect()
|
||||
pointing_effect = new /obj/effect/decal/point(A)
|
||||
pointing_effect.invisibility = invisibility
|
||||
addtimer(CALLBACK(src, .proc/end_pointing_effect, pointing_effect), 2 SECONDS)
|
||||
else
|
||||
var/atom/movable/M = A
|
||||
M.add_filter("pointglow", 1, list(type = "drop_shadow", x = 0, y = -1, offset = 1, size = 1, color = "#F00"))
|
||||
addtimer(CALLBACK(M, /atom/movable.proc/remove_filter, "pointglow"), 2 SECONDS)
|
||||
return TRUE
|
||||
|
||||
/mob/proc/end_pointing_effect()
|
||||
QDEL_NULL(pointing_effect)
|
||||
|
||||
/mob/verb/mode()
|
||||
set name = "Activate Held Object"
|
||||
|
||||
Reference in New Issue
Block a user