up ports incorp and proximity handling (#17106)

* up ports inCorp and proximity handling

* anim size

* bullets no longer hit shadekin

* fix throwing and clicking

* use the proc

* and add the proc

* .

* No moving when you can't move

* fixes portal runtime

* No bonk when throwing at incorporeal entities

* MAR

- I coded in picking yourself up years ago and someone broke it (by adding a lying check). This unbreaks it. Additionally, picking yourself up was made immediate instead of a 0.5 delay since before hitting the U key was slow and doing it this way was quicker. That's not the case anymore.

- Makes attack_hand not happen if the person is incorporeal
- Makes you not  contract touch spread viruses when you click one someone and don't do an interaction (you will now always do an interaction)
- Makes it so you can't mousedrop items while phased.

* no more spreading viruses while phased  / to phased

* F

---------

Co-authored-by: C.L. <killer65311@gmail.com>
This commit is contained in:
Kashargul
2025-03-01 12:09:35 -05:00
committed by GitHub
co-authored by C.L.
parent 0948805ebf
commit 55a61bc38f
54 changed files with 270 additions and 85 deletions
@@ -270,6 +270,8 @@
for(var/atom/thing in nearby_things)
if(thing.type != desired_type)
continue
if(thing.is_incorporeal())
continue
valid_things.Add(thing)
if(valid_things.len)
O.data = WEAKREF(pick(valid_things))
@@ -313,11 +315,15 @@
var/desired_type = A.type
if(desired_type)
for(var/atom/thing in nearby_things)
if(thing.is_incorporeal())
continue
if(thing.type == desired_type)
valid_things.Add(thing)
else if(istext(I.data))
var/DT = I.data
for(var/atom/thing in nearby_things)
if(thing.is_incorporeal())
continue
if(findtext(addtext(thing.name," ",thing.desc), DT, 1, 0) )
valid_things.Add(thing)
if(valid_things.len)
@@ -526,6 +532,7 @@
complexity = 8
inputs = list()
outputs = list(
"speaker ref",
"speaker" = IC_PINTYPE_STRING,
"message" = IC_PINTYPE_STRING
)
@@ -551,8 +558,9 @@
// as a translation, when it is not.
if(S.speaking && !istype(S.speaking, /datum/language/common))
translated = TRUE
set_pin_data(IC_OUTPUT, 1, M.GetVoice())
set_pin_data(IC_OUTPUT, 2, msg)
set_pin_data(IC_OUTPUT , 1, WEAKREF(M))
set_pin_data(IC_OUTPUT, 2, M.GetVoice())
set_pin_data(IC_OUTPUT, 3, msg)
push_data()
activate_pin(1)
@@ -570,6 +578,7 @@
complexity = 12
inputs = list()
outputs = list(
"speaker ref",
"speaker" = IC_PINTYPE_STRING,
"message" = IC_PINTYPE_STRING
)
@@ -596,16 +605,14 @@
/obj/item/integrated_circuit/input/microphone/sign/hear_talk(mob/M, list/message_pieces, verb)
var/msg = multilingual_to_message(message_pieces)
var/translated = FALSE
var/translated = TRUE
if(M && msg)
for(var/datum/multilingual_say_piece/S in message_pieces)
if(S.speaking)
if(!((S.speaking.flags & NONVERBAL) || (S.speaking.flags & SIGNLANG)))
translated = TRUE
msg = stars(msg)
break
set_pin_data(IC_OUTPUT, 1, M.GetVoice())
set_pin_data(IC_OUTPUT, 2, msg)
if(!((S.speaking.flags & NONVERBAL) || (S.speaking.flags & SIGNLANG))||S.speaking.name == LANGUAGE_ECHOSONG) //Ignore verbal languages
return
set_pin_data(IC_OUTPUT , 1, WEAKREF(M))
set_pin_data(IC_OUTPUT, 2, M.GetVoice())
set_pin_data(IC_OUTPUT, 3, msg)
push_data()
if(!translated)
@@ -614,12 +621,11 @@
activate_pin(2)
/obj/item/integrated_circuit/input/microphone/sign/hear_signlang(text, verb, datum/language/speaking, mob/M as mob)
var/translated = FALSE
var/translated = TRUE
if(M && text)
if(speaking)
if(!((speaking.flags & NONVERBAL) || (speaking.flags & SIGNLANG)))
translated = TRUE
text = speaking.scramble(text, my_langs)
if(!((speaking.flags & NONVERBAL) || (speaking.flags & SIGNLANG))||speaking.name == LANGUAGE_ECHOSONG)
return
set_pin_data(IC_OUTPUT, 1, M.GetVoice())
set_pin_data(IC_OUTPUT, 2, text)