Merge remote-tracking branch 'refs/remotes/Citadel-Station-13/master' into donoritemmodularization
# Conflicts: # code/citadel/custom_loadout/custom_items.dm # code/datums/components/riding.dm # code/game/objects/items/implants/implantuplink.dm # icons/mob/neck.dmi # icons/obj/clothing/cloaks.dmi
This commit is contained in:
@@ -320,7 +320,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(mind.current.key && copytext(mind.current.key,1,2)!="@") //makes sure we don't accidentally kick any clients
|
||||
to_chat(usr, "<span class='warning'>Another consciousness is in your body...It is resisting you.</span>")
|
||||
return
|
||||
client.change_view(world.view)
|
||||
client.change_view(CONFIG_GET(string/default_view))
|
||||
SStgui.on_transfer(src, mind.current) // Transfer NanoUIs.
|
||||
mind.current.key = key
|
||||
return 1
|
||||
@@ -456,7 +456,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set desc = "Change your view range."
|
||||
|
||||
var/max_view = client.prefs.unlock_content ? GHOST_MAX_VIEW_RANGE_MEMBER : GHOST_MAX_VIEW_RANGE_DEFAULT
|
||||
if(client.view == world.view)
|
||||
if(client.view == CONFIG_GET(string/default_view))
|
||||
var/list/views = list()
|
||||
for(var/i in 7 to max_view)
|
||||
views |= i
|
||||
@@ -464,7 +464,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(new_view)
|
||||
client.change_view(Clamp(new_view, 7, max_view))
|
||||
else
|
||||
client.change_view(world.view)
|
||||
client.change_view(CONFIG_GET(string/default_view))
|
||||
|
||||
/mob/dead/observer/verb/add_view_range(input as num)
|
||||
set name = "Add View Range"
|
||||
|
||||
@@ -37,36 +37,36 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
//kinda localization -- rastaf0
|
||||
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
|
||||
// Location
|
||||
"ê" = "right hand",
|
||||
"ä" = "left hand",
|
||||
"ø" = "intercom",
|
||||
"ê" = "right hand",
|
||||
"ä" = "left hand",
|
||||
"ø" = "intercom",
|
||||
|
||||
// Department
|
||||
"ð" = "department",
|
||||
"ñ" = "Command",
|
||||
"ò" = "Science",
|
||||
"ü" = "Medical",
|
||||
"ó" = "Engineering",
|
||||
"û" = "Security",
|
||||
"ã" = "Supply",
|
||||
"ì" = "Service",
|
||||
"ð" = "department",
|
||||
"ñ" = "Command",
|
||||
"ò" = "Science",
|
||||
"ü" = "Medical",
|
||||
"ó" = "Engineering",
|
||||
"û" = "Security",
|
||||
"ã" = "Supply",
|
||||
"ì" = "Service",
|
||||
|
||||
// Faction
|
||||
"å" = "Syndicate",
|
||||
"í" = "CentCom",
|
||||
"å" = "Syndicate",
|
||||
"í" = "CentCom",
|
||||
|
||||
// Species
|
||||
"è" = "binary",
|
||||
"ï" = "changeling",
|
||||
"ô" = "alientalk",
|
||||
"è" = "binary",
|
||||
"ï" = "changeling",
|
||||
"ô" = "alientalk",
|
||||
|
||||
// Admin
|
||||
"ç" = "admin",
|
||||
"â" = "deadmin",
|
||||
"ç" = "admin",
|
||||
"â" = "deadmin",
|
||||
|
||||
// Misc
|
||||
"ù" = "AI Private",
|
||||
"÷" = "cords"
|
||||
"ù" = "AI Private",
|
||||
"÷" = "cords"
|
||||
))
|
||||
|
||||
/mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE)
|
||||
@@ -137,7 +137,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
|
||||
var/datum/saymode/SM = SSradio.saymodes[key]
|
||||
if(key && SM)
|
||||
if(!SM.handle_message(src, message, language))
|
||||
if(!SM.handle_message(src, message, language) && !message_mode)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -817,7 +817,8 @@
|
||||
return (GLOB.cameranet && GLOB.cameranet.checkTurfVis(get_turf_pixel(A))) || apc_override
|
||||
//AI is carded/shunted
|
||||
//view(src) returns nothing for carded/shunted AIs and they have x-ray vision so just use get_dist
|
||||
return get_dist(src, A) <= client.view
|
||||
var/list/viewscale = getviewsize(client.view)
|
||||
return get_dist(src, A) <= max(viewscale[1]*0.5,viewscale[2]*0.5)
|
||||
|
||||
/mob/living/silicon/ai/proc/relay_speech(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
raw_message = lang_treat(speaker, message_language, raw_message, spans, message_mode)
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
var/mob/living/silicon/S = src
|
||||
desig = trim_left(S.designation + " " + S.job)
|
||||
var/message_a = say_quote(message, get_spans())
|
||||
var/rendered = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
|
||||
var/rendered = "Robotic Talk, <span class='name'>[name]</span> <span class='message'>[message_a]</span>"
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if(M.binarycheck())
|
||||
if(isAI(M))
|
||||
var/renderedAI = "<i><span class='game say'>Robotic Talk, <a href='?src=[REF(M)];track=[html_encode(name)]'><span class='name'>[name] ([desig])</span></a> <span class='message'>[message_a]</span></span></i>"
|
||||
var/renderedAI = "<span class='binarysay'>Robotic Talk, <a href='?src=[REF(M)];track=[html_encode(name)]'><span class='name'>[name] ([desig])</span></a> <span class='message'>[message_a]</span></span>"
|
||||
to_chat(M, renderedAI)
|
||||
else
|
||||
to_chat(M, rendered)
|
||||
to_chat(M, "<span class='binarysay'>[rendered]</span>")
|
||||
if(isobserver(M))
|
||||
var/following = src
|
||||
// If the AI talks on binary chat, we still want to follow
|
||||
@@ -26,7 +26,7 @@
|
||||
var/mob/living/silicon/ai/ai = src
|
||||
following = ai.eyeobj
|
||||
var/link = FOLLOW_LINK(M, following)
|
||||
to_chat(M, "[link] [rendered]")
|
||||
to_chat(M, "<span class='binarysay'>[link] [rendered]</span>")
|
||||
|
||||
/mob/living/silicon/binarycheck()
|
||||
return 1
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
gender = MALE
|
||||
speak = list("Meow!", "Esp!", "Purr!", "HSSSSS")
|
||||
speak_emote = list("purrs", "meows")
|
||||
emote_hear = list("meows", "mews")
|
||||
emote_see = list("shakes its head", "shivers")
|
||||
emote_hear = list("meows.", "mews.")
|
||||
emote_see = list("shakes its head.", "shivers.")
|
||||
speak_chance = 1
|
||||
turns_per_move = 5
|
||||
see_in_dark = 6
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
/mob/living/simple_animal/hostile/asteroid/fugu
|
||||
name = "wumborian fugu"
|
||||
desc = "The wumborian fugu rapidly increases its body mass in order to ward off its prey. Great care should be taken to avoid it while it's in this state as it is nearly invincible, but it cannot maintain its form forever."
|
||||
icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
|
||||
icon_state = "Fugu"
|
||||
icon_living = "Fugu"
|
||||
icon_aggro = "Fugu"
|
||||
icon = 'icons/mob/lavaland/64x64megafauna.dmi'
|
||||
icon_state = "Fugu0"
|
||||
icon_living = "Fugu0"
|
||||
icon_aggro = "Fugu0"
|
||||
icon_dead = "Fugu_dead"
|
||||
icon_gib = "syndicate_gib"
|
||||
mouse_opacity = MOUSE_OPACITY_OPAQUE
|
||||
@@ -16,6 +16,7 @@
|
||||
speed = 0
|
||||
maxHealth = 50
|
||||
health = 50
|
||||
pixel_x = -16
|
||||
harm_intent_damage = 5
|
||||
obj_damage = 0
|
||||
melee_damage_lower = 0
|
||||
@@ -30,13 +31,23 @@
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
var/wumbo = 0
|
||||
var/inflate_cooldown = 0
|
||||
var/datum/action/innate/fugu/expand/E
|
||||
loot = list(/obj/item/asteroid/fugu_gland{layer = ABOVE_MOB_LAYER})
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/fugu/Initialize()
|
||||
. = ..()
|
||||
E = new
|
||||
E.Grant(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/fugu/Destroy()
|
||||
QDEL_NULL(E)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/fugu/Life()
|
||||
if(!wumbo)
|
||||
inflate_cooldown = max((inflate_cooldown - 1), 0)
|
||||
if(target && AIStatus == AI_ON)
|
||||
Inflate()
|
||||
E.Activate()
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/fugu/adjustHealth(amount, updating_health = TRUE, forced = FALSE)
|
||||
@@ -46,42 +57,47 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/fugu/Aggro()
|
||||
..()
|
||||
Inflate()
|
||||
E.Activate()
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/fugu/verb/Inflate()
|
||||
set name = "Inflate"
|
||||
set category = "Fugu"
|
||||
set desc = "Temporarily increases your size, and makes you significantly more dangerous and tough."
|
||||
if(wumbo)
|
||||
to_chat(src, "<span class='notice'>You're already inflated.</span>")
|
||||
/datum/action/innate/fugu
|
||||
icon_icon = 'icons/mob/actions/actions_animal.dmi'
|
||||
|
||||
/datum/action/innate/fugu/expand
|
||||
name = "Inflate"
|
||||
desc = "Temporarily increases your size, and makes you significantly more dangerous and tough! Do not bully the fugu!"
|
||||
button_icon_state = "expand"
|
||||
|
||||
/datum/action/innate/fugu/expand/Activate()
|
||||
var/mob/living/simple_animal/hostile/asteroid/fugu/F = owner
|
||||
if(F.wumbo)
|
||||
to_chat(F, "<span class='notice'>YOU'RE ALREADY WUMBO!</span>")
|
||||
return
|
||||
if(inflate_cooldown)
|
||||
to_chat(src, "<span class='notice'>We need time to gather our strength.</span>")
|
||||
if(F.inflate_cooldown)
|
||||
to_chat(F, "<span class='notice'>You need time to gather your strength.</span>")
|
||||
return
|
||||
if(buffed)
|
||||
to_chat(src, "<span class='notice'>Something is interfering with our growth.</span>")
|
||||
if(F.buffed)
|
||||
to_chat(F, "<span class='notice'>Something is interfering with your growth.</span>")
|
||||
return
|
||||
wumbo = 1
|
||||
icon_state = "Fugu_big"
|
||||
obj_damage = 60
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 20
|
||||
harm_intent_damage = 0
|
||||
throw_message = "is absorbed by the girth of the"
|
||||
retreat_distance = null
|
||||
minimum_distance = 1
|
||||
move_to_delay = 6
|
||||
transform *= 2
|
||||
environment_smash = ENVIRONMENT_SMASH_WALLS
|
||||
mob_size = MOB_SIZE_LARGE
|
||||
speed = 1
|
||||
addtimer(CALLBACK(src, .proc/Deflate), 100)
|
||||
F.wumbo = 1
|
||||
F.icon_state = "Fugu1"
|
||||
F.obj_damage = 60
|
||||
F.melee_damage_lower = 15
|
||||
F.melee_damage_upper = 20
|
||||
F.harm_intent_damage = 0
|
||||
F.throw_message = "is absorbed by the girth of the"
|
||||
F.retreat_distance = null
|
||||
F.minimum_distance = 1
|
||||
F.move_to_delay = 6
|
||||
F.environment_smash = ENVIRONMENT_SMASH_WALLS
|
||||
F.mob_size = MOB_SIZE_LARGE
|
||||
F.speed = 1
|
||||
addtimer(CALLBACK(F, /mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate), 100)
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate()
|
||||
if(wumbo)
|
||||
walk(src, 0)
|
||||
wumbo = 0
|
||||
icon_state = "Fugu"
|
||||
icon_state = "Fugu0"
|
||||
obj_damage = 0
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
@@ -90,7 +106,6 @@
|
||||
retreat_distance = 9
|
||||
minimum_distance = 9
|
||||
move_to_delay = 2
|
||||
transform /= 2
|
||||
inflate_cooldown = 4
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
if(client)
|
||||
client.click_intercept = null
|
||||
|
||||
client.change_view(world.view) // Resets the client.view in case it was changed.
|
||||
client.change_view(CONFIG_GET(string/default_view)) // Resets the client.view in case it was changed.
|
||||
|
||||
if(!GLOB.individual_log_list[ckey])
|
||||
GLOB.individual_log_list[ckey] = logging
|
||||
|
||||
Reference in New Issue
Block a user