mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 07:08:00 +01:00
Merge conflic fix
This commit is contained in:
@@ -86,7 +86,7 @@ Works together with spawning an observer, noted above.
|
||||
if(key)
|
||||
if(!cmptext(copytext(key,1,2),"@")) // Skip aghosts.
|
||||
var/mob/dead/observer/ghost = new(src) // Transfer safety to observer spawning proc.
|
||||
SSnano.on_transfer(src, ghost) // Transfer NanoUIs.
|
||||
SStgui.on_transfer(src, ghost) // Transfer NanoUIs.
|
||||
ghost.can_reenter_corpse = can_reenter_corpse
|
||||
ghost.key = key
|
||||
return ghost
|
||||
@@ -156,7 +156,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
|
||||
usr << "<span class='warning'>Another consciousness is in your body...It is resisting you.</span>"
|
||||
return
|
||||
SSnano.on_transfer(src, mind.current) // Transfer NanoUIs.
|
||||
SStgui.on_transfer(src, mind.current) // Transfer NanoUIs.
|
||||
mind.current.key = key
|
||||
return 1
|
||||
|
||||
|
||||
@@ -11,8 +11,10 @@
|
||||
var/message_a = say_quote(message, get_spans())
|
||||
var/rendered = "<i><span class='alien'>Hivemind, <span class='name'>[shown_name]</span> <span class='message'>[message_a]</span></span></i>"
|
||||
for(var/mob/S in player_list)
|
||||
if((!S.stat && S.hivecheck()) || (S in dead_mob_list))
|
||||
if(!S.stat && S.hivecheck())
|
||||
S << rendered
|
||||
if(S in dead_mob_list)
|
||||
S << "<a href='?src=\ref[S];follow=\ref[src]'>(F)</a>[rendered]"
|
||||
|
||||
/mob/living/carbon/alien/humanoid/royal/queen/alien_talk(message, shown_name = name)
|
||||
shown_name = "<FONT size = 3>[shown_name]</FONT>"
|
||||
|
||||
@@ -39,7 +39,10 @@ var/global/posibrain_notif_cooldown = 0
|
||||
spawn(askDelay) //Seperate from the global cooldown.
|
||||
notified = 0
|
||||
update_icon()
|
||||
visible_message("<span class='notice'>The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?</span>")
|
||||
if(brainmob.stat == CONSCIOUS && brainmob.client)
|
||||
visible_message("<span class='notice'>The positronic brain pings, and its lights start flashing. Success!</span>")
|
||||
else
|
||||
visible_message("<span class='notice'>The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?</span>")
|
||||
|
||||
return //Code for deleting personalities recommended here.
|
||||
|
||||
@@ -127,7 +130,6 @@ var/global/posibrain_notif_cooldown = 0
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/posibrain/New()
|
||||
|
||||
brainmob = new(src)
|
||||
brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI","HBL","MSO","RR","CHRI","CDB","HG","XSI","ORNG","GUN","KOR","MET","FRE","XIS","SLI","PKP","HOG","RZH","GOOF","MRPR","JJR","FIRC","INC","PHL","BGB","ANTR","MIW","WJ","JRD","CHOC","ANCL","JLLO","ANNS","KOS","TKRG","XAL","STLP","CBOS","DNCN","FXMC","DRSD"))]-[rand(100, 999)]"
|
||||
brainmob.real_name = brainmob.name
|
||||
@@ -137,7 +139,6 @@ var/global/posibrain_notif_cooldown = 0
|
||||
brainmob.silent = 0
|
||||
dead_mob_list -= brainmob
|
||||
ping_ghosts("created")
|
||||
|
||||
..()
|
||||
|
||||
|
||||
|
||||
@@ -21,8 +21,6 @@
|
||||
t_has = "have"
|
||||
t_is = "are"
|
||||
else
|
||||
if(icon)
|
||||
msg += "\icon[src] " //note, should we ever go back to runtime-generated icons (please don't), you will need to change this to \icon[icon] to prevent crashes.
|
||||
switch(gender)
|
||||
if(MALE)
|
||||
t_He = "He"
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
if(head)
|
||||
if(head.flags & BLOCK_GAS_SMOKE_EFFECT)
|
||||
. = 1
|
||||
if(NOBREATH in dna.species.specflags)
|
||||
. = 1
|
||||
return .
|
||||
/mob/living/carbon/human/proc/handle_embedded_objects()
|
||||
for(var/obj/item/organ/limb/L in organs)
|
||||
|
||||
@@ -208,7 +208,7 @@ var/list/crit_allowed_modes = list(MODE_WHISPER,MODE_CHANGELING,MODE_ALIEN)
|
||||
log_say("[mind.changeling.changelingID]/[src.key] : [message]")
|
||||
for(var/mob/M in mob_list)
|
||||
if(M in dead_mob_list)
|
||||
M << msg
|
||||
M << "<a href='?src=\ref[M];follow=\ref[src]'>(F)</a>[msg]"
|
||||
else
|
||||
switch(M.lingcheck())
|
||||
if(2)
|
||||
|
||||
@@ -842,4 +842,10 @@ var/list/ai_list = list()
|
||||
//get_turf_pixel() is because APCs in maint aren't actually in view of the inner camera
|
||||
if(M && cameranet && !cameranet.checkTurfVis(get_turf_pixel(M)) && !apc_override)
|
||||
return
|
||||
return 1
|
||||
return 1
|
||||
|
||||
/mob/living/silicon/ai/proc/relay_speech(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||
raw_message = lang_treat(speaker, message_langs, raw_message, spans)
|
||||
var/name_used = speaker.GetVoice()
|
||||
var/rendered = "<i><span class='game say'>Relayed Speech: <span class='name'>[name_used]</span> <span class='message'>[raw_message]</span></span></i>"
|
||||
show_message(rendered, 2)
|
||||
@@ -6,9 +6,10 @@
|
||||
/mob/camera/aiEye
|
||||
name = "Inactive AI Eye"
|
||||
|
||||
invisibility = 100
|
||||
var/list/visibleCameraChunks = list()
|
||||
var/mob/living/silicon/ai/ai = null
|
||||
|
||||
var/relay_speech = FALSE
|
||||
|
||||
// Use this when setting the aiEye's location.
|
||||
// It will also stream the chunk that the new loc is in.
|
||||
@@ -78,7 +79,6 @@
|
||||
if (user.camera_light_on)
|
||||
user.light_cameras()
|
||||
|
||||
|
||||
// Return to the Core.
|
||||
/mob/living/silicon/ai/proc/view_core()
|
||||
|
||||
@@ -104,3 +104,7 @@
|
||||
return //won't work if dead
|
||||
acceleration = !acceleration
|
||||
usr << "Camera acceleration has been toggled [acceleration ? "on" : "off"]."
|
||||
|
||||
/mob/camera/aiEye/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||
if(relay_speech && speaker && ai && !radio_freq && speaker != ai && near_camera(speaker))
|
||||
ai.relay_speech(message, speaker, message_langs, raw_message, radio_freq, spans)
|
||||
@@ -17,3 +17,10 @@
|
||||
|
||||
src.laws_sanity_check()
|
||||
src.laws.show_laws(who)
|
||||
if(!everyone)
|
||||
for(var/mob/living/silicon/robot/R in connected_robots)
|
||||
if(R.lawupdate)
|
||||
R.lawsync()
|
||||
R.show_laws()
|
||||
R.law_change_counter++
|
||||
|
||||
|
||||
@@ -13,12 +13,14 @@
|
||||
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>"
|
||||
for(var/mob/M in player_list)
|
||||
if(M.binarycheck() || (M in dead_mob_list))
|
||||
if(M.binarycheck())
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
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>"
|
||||
M << renderedAI
|
||||
else
|
||||
M << rendered
|
||||
if(M in dead_mob_list)
|
||||
M << "<a href='?src=\ref[M];follow=\ref[src]'>(F)</a>[rendered]"
|
||||
|
||||
/mob/living/silicon/binarycheck()
|
||||
return 1
|
||||
|
||||
@@ -161,4 +161,19 @@
|
||||
corpseuniform = /obj/item/clothing/under/color/lightpurple
|
||||
corpsesuit = /obj/item/clothing/suit/wizrobe
|
||||
corpseshoes = /obj/item/clothing/shoes/sandal
|
||||
corpsehelmet = /obj/item/clothing/head/wizard
|
||||
corpsehelmet = /obj/item/clothing/head/wizard
|
||||
|
||||
|
||||
/obj/effect/landmark/mobcorpse/nanotrasensoldier
|
||||
name = "Nanotrasen Private Security Officer"
|
||||
corpseuniform = /obj/item/clothing/under/rank/security
|
||||
corpsesuit = /obj/item/clothing/suit/armor/vest
|
||||
corpseshoes = /obj/item/clothing/shoes/combat
|
||||
corpsegloves = /obj/item/clothing/gloves/combat
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/sechailer/swat
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/swat/nanotrasen
|
||||
corpseback = /obj/item/weapon/storage/backpack/security
|
||||
corpseid = 1
|
||||
corpseidjob = "Private Security Force"
|
||||
corpseidaccess = "Security Officer"
|
||||
@@ -2,13 +2,13 @@
|
||||
name = "Guardian Spirit"
|
||||
real_name = "Guardian Spirit"
|
||||
desc = "A mysterious being that stands by it's charge, ever vigilant."
|
||||
speak_emote = list("intones")
|
||||
speak_emote = list("hisses")
|
||||
response_help = "passes through"
|
||||
response_disarm = "flails at"
|
||||
response_harm = "punches"
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "stand"
|
||||
icon_living = "stand"
|
||||
icon = 'icons/mob/guardian.dmi'
|
||||
icon_state = "guardianorange"
|
||||
icon_living = "guardianorange"
|
||||
icon_dead = "stand"
|
||||
speed = 0
|
||||
a_intent = "harm"
|
||||
@@ -26,7 +26,6 @@
|
||||
melee_damage_upper = 15
|
||||
butcher_results = list(/obj/item/weapon/ectoplasm = 1)
|
||||
AIStatus = AI_OFF
|
||||
var/animated_manifest = FALSE
|
||||
var/cooldown = 0
|
||||
var/damage_transfer = 1 //how much damage from each attack we transfer to the owner
|
||||
var/mob/living/summoner
|
||||
@@ -34,7 +33,6 @@
|
||||
var/playstyle_string = "You are a standard Guardian. You shouldn't exist!"
|
||||
var/magic_fluff_string = " You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!"
|
||||
var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!"
|
||||
var/bio_fluff_string = "Your scarabs fail to mutate. This shouldn't happen! Submit a bug report!"
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/Life() //Dies if the summoner dies
|
||||
..()
|
||||
@@ -119,11 +117,6 @@
|
||||
if(loc == summoner)
|
||||
loc = get_turf(summoner)
|
||||
cooldown = world.time + 30
|
||||
if(animated_manifest)
|
||||
var/end_icon = icon_state
|
||||
icon_state = "parasite_forming"
|
||||
spawn(6)
|
||||
icon_state = end_icon
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/proc/Recall()
|
||||
if(cooldown > world.time)
|
||||
@@ -136,10 +129,13 @@
|
||||
var/input = stripped_input(src, "Please enter a message to tell your summoner.", "Guardian", "")
|
||||
if(!input) return
|
||||
|
||||
var/my_message = "<span class='boldannounce'><i>[src]:</i> [input]</span>"
|
||||
for(var/mob/M in mob_list)
|
||||
if(M == summoner || (M in dead_mob_list))
|
||||
M << "<span class='boldannounce'><i>[src]:</i> [input]</span>"
|
||||
src << "<span class='boldannounce'><i>[src]:</i> [input]</span>"
|
||||
if(M == summoner)
|
||||
M << my_message
|
||||
if(M in dead_mob_list)
|
||||
M << "<a href='?src=\ref[M];follow=\ref[src]'>(F)</a>[my_message]"
|
||||
src << "[my_message]"
|
||||
log_say("[src.real_name]/[src.key] : [input]")
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/proc/ToggleMode()
|
||||
@@ -153,13 +149,14 @@
|
||||
var/input = stripped_input(src, "Please enter a message to tell your guardian.", "Message", "")
|
||||
if(!input) return
|
||||
|
||||
var/my_message = "<span class='boldannounce'><i>[src]:</i> [input]</span>"
|
||||
for(var/mob/M in mob_list)
|
||||
if(istype (M, /mob/living/simple_animal/hostile/guardian))
|
||||
var/mob/living/simple_animal/hostile/guardian/G = M
|
||||
if(G.summoner == src)
|
||||
G << "<span class='boldannounce'><i>[src]:</i> [input]</span>"
|
||||
G << "[my_message]"
|
||||
else if (M in dead_mob_list)
|
||||
M << "<span class='boldannounce'><i>[src]:</i> [input]</span>"
|
||||
M << "<a href='?src=\ref[M];follow=\ref[src]'>(F)</a>[my_message]"
|
||||
src << "<span class='boldannounce'><i>[src]:</i> [input]</span>"
|
||||
log_say("[src.real_name]/[src.key] : [text]")
|
||||
|
||||
@@ -217,7 +214,6 @@
|
||||
environment_smash = 1
|
||||
magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!"
|
||||
tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online."
|
||||
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to sow havoc at random."
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire/Life() //Dies if the summoner dies
|
||||
..()
|
||||
@@ -265,7 +261,6 @@
|
||||
environment_smash = 2
|
||||
magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated."
|
||||
tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online."
|
||||
bio_fluff_string = "Your scarab swarm stirs to life, ready to tear apart your enemies."
|
||||
var/battlecry = "AT"
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/punch/verb/Battlecry()
|
||||
@@ -299,7 +294,6 @@
|
||||
playstyle_string = "As a Support type, you may toggle your basic attacks to a healing mode. In addition, Alt-Clicking on an adjacent mob will warp them to your bluespace beacon after a short delay."
|
||||
magic_fluff_string = "..And draw the CMO, a potent force of life...and death."
|
||||
tech_fluff_string = "Boot sequence complete. Medical modules active. Bluespace modules activated. Holoparasite swarm online."
|
||||
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of mending wounds and travelling via bluespace."
|
||||
var/turf/simulated/floor/beacon
|
||||
var/beacon_cooldown = 0
|
||||
var/toggle = FALSE
|
||||
@@ -424,7 +418,6 @@
|
||||
playstyle_string = "As a ranged type, you have only light damage resistance, but are capable of spraying shards of crystal at incredibly high speed. You can also deploy surveillance snares to monitor enemy movement. Finally, you can switch to scout mode, in which you can't attack, but can move without limit."
|
||||
magic_fluff_string = "..And draw the Sentinel, an alien master of ranged combat."
|
||||
tech_fluff_string = "Boot sequence complete. Ranged combat modules active. Holoparasite swarm online."
|
||||
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of spraying shards of crystal."
|
||||
var/list/snares = list()
|
||||
var/toggle = FALSE
|
||||
|
||||
@@ -502,7 +495,6 @@
|
||||
playstyle_string = "As an explosive type, you have only moderate close combat abilities, but are capable of converting any adjacent item into a disguised bomb via alt click."
|
||||
magic_fluff_string = "..And draw the Scientist, master of explosive death."
|
||||
tech_fluff_string = "Boot sequence complete. Explosive modules active. Holoparasite swarm online."
|
||||
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of stealthily booby trapping items."
|
||||
var/bomb_cooldown = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/bomb/AltClickOn(atom/movable/A)
|
||||
@@ -609,7 +601,6 @@
|
||||
else
|
||||
gaurdiantype = input(user, "Pick the type of [mob_name]", "[mob_name] Creation") as null|anything in possible_guardians
|
||||
var/pickedtype = /mob/living/simple_animal/hostile/guardian/punch
|
||||
var/picked_color = randomColor(0)
|
||||
switch(gaurdiantype)
|
||||
|
||||
if("Chaos")
|
||||
@@ -638,26 +629,20 @@
|
||||
user.verbs += /mob/living/proc/guardian_comm
|
||||
user.verbs += /mob/living/proc/guardian_recall
|
||||
user.verbs += /mob/living/proc/guardian_reset
|
||||
|
||||
var/picked_name = pick("Aries", "Leo", "Sagittarius", "Taurus", "Virgo", "Capricorn", "Gemini", "Libra", "Aquarius", "Cancer", "Scorpio", "Pisces")
|
||||
var/colour = pick("orange", "pink", "red", "blue", "green")
|
||||
G.name = "[picked_name] [capitalize(colour)]"
|
||||
G.real_name = "[picked_name] [capitalize(colour)]"
|
||||
G.icon_living = "guardian[colour]"
|
||||
G.icon_state = "guardian[colour]"
|
||||
G.icon_dead = "guardian[colour]"
|
||||
|
||||
switch (theme)
|
||||
if("magic")
|
||||
G.name = "[mob_name] [capitalize(picked_color)]"
|
||||
G.color = color2hex(picked_color)
|
||||
G.real_name = "[mob_name] [capitalize(picked_color)]"
|
||||
user << "[G.magic_fluff_string]."
|
||||
if("tech")
|
||||
var/colour = pick("orange", "neon", "pink", "red", "blue", "green")
|
||||
G.name = "[mob_name] [capitalize(colour)]"
|
||||
G.real_name = "[mob_name] [capitalize(colour)]"
|
||||
G.icon_living = "parasite[colour]"
|
||||
G.icon_state = "parasite[colour]"
|
||||
G.icon_dead = "parasite[colour]"
|
||||
G.animated_manifest = TRUE
|
||||
user << "[G.tech_fluff_string]."
|
||||
G.speak_emote = list("states")
|
||||
if("bio")
|
||||
user << "[G.bio_fluff_string]."
|
||||
G.attacktext = "swarms"
|
||||
G.speak_emote = list("chitters")
|
||||
G.mind.name = "[G.real_name]"
|
||||
|
||||
/obj/item/weapon/guardiancreator/choose
|
||||
@@ -678,21 +663,6 @@
|
||||
/obj/item/weapon/guardiancreator/tech/choose
|
||||
random = FALSE
|
||||
|
||||
/obj/item/weapon/guardiancreator/biological
|
||||
name = "scarab egg cluster"
|
||||
desc = "A parasitic species that will nest in the closest living creature upon birth. While not great for your health, they'll defend their new 'hive' to the death."
|
||||
icon = 'icons/obj/syringe.dmi'
|
||||
icon_state = "combat_hypo"
|
||||
theme = "bio"
|
||||
mob_name = "Scarab Swarm"
|
||||
use_message = "The eggs begin to twitch..."
|
||||
used_message = "The cluster already hatched."
|
||||
failure_message = "<B>...but soon settles again. Guess they weren't ready to hatch after all.</B>"
|
||||
|
||||
/obj/item/weapon/guardiancreator/biological/choose
|
||||
random = FALSE
|
||||
|
||||
|
||||
/obj/item/weapon/paper/guardian
|
||||
name = "Holoparasite Guide"
|
||||
icon_state = "alienpaper_words"
|
||||
@@ -724,11 +694,6 @@
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
///HUD
|
||||
|
||||
/datum/hud/proc/guardian_hud(ui_style = 'icons/mob/screen_midnight.dmi')
|
||||
@@ -761,8 +726,6 @@
|
||||
mymob.client.screen += adding
|
||||
|
||||
|
||||
|
||||
|
||||
//HUD BUTTONS
|
||||
|
||||
/obj/screen/guardian
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
faction = list("carp")
|
||||
flying = 1
|
||||
pressure_resistance = 200
|
||||
gold_core_spawnable = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/Process_Spacemove(movement_dir = 0)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
speak_emote = list("states")
|
||||
gold_core_spawnable = 1
|
||||
del_on_death = 1
|
||||
loot = (/obj/effect/decal/cleanable/robot_debris)
|
||||
loot = list(/obj/effect/decal/cleanable/robot_debris)
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/New()
|
||||
..()
|
||||
|
||||
@@ -374,6 +374,8 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/goliath/OpenFire()
|
||||
var/tturf = get_turf(target)
|
||||
if(!(istype(tturf, /turf/simulated)))
|
||||
return
|
||||
if(get_dist(src, target) <= 7)//Screen range check, so you can't get tentacle'd offscreen
|
||||
visible_message("<span class='warning'>The [src.name] digs its tentacles under [target.name]!</span>")
|
||||
new /obj/effect/goliath_tentacle/original(tturf)
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
/mob/living/simple_animal/hostile/nanotrasen
|
||||
name = "Nanotrasen Private Security Officer"
|
||||
desc = "An officer part of Nanotrasen's private security force, he seems rather unpleased to meet you."
|
||||
icon_state = "nanotrasen"
|
||||
icon_living = "nanotrasen"
|
||||
icon_dead = null
|
||||
icon_gib = "syndicate_gib"
|
||||
speak_chance = 25
|
||||
turns_per_move = 5
|
||||
response_help = "pokes"
|
||||
response_disarm = "shoves"
|
||||
response_harm = "hits"
|
||||
speed = 0
|
||||
stat_attack = 1
|
||||
robust_searching = 1
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 15
|
||||
attacktext = "punches"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
a_intent = "harm"
|
||||
loot = list(/obj/effect/landmark/mobcorpse/nanotrasensoldier)
|
||||
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
|
||||
unsuitable_atmos_damage = 15
|
||||
faction = list("nanotrasenprivate")
|
||||
status_flags = CANPUSH
|
||||
speak = list("Stop resisting!", "I AM THE LAW!", "Face the wrath of the golden bolt!", "Stop breaking the law, asshole!")
|
||||
search_objects = 1
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/nanotrasen/Aggro()
|
||||
..()
|
||||
summon_backup(15)
|
||||
say("411 in progress, requesting backup!")
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/nanotrasen/ranged
|
||||
icon_state = "nanotrasenranged"
|
||||
icon_living = "nanotrasenranged"
|
||||
ranged = 1
|
||||
retreat_distance = 3
|
||||
minimum_distance = 5
|
||||
casingtype = /obj/item/ammo_casing/c45
|
||||
projectilesound = 'sound/weapons/Gunshot.ogg'
|
||||
loot = list(/obj/item/weapon/gun/projectile/automatic/pistol/m1911,
|
||||
/obj/effect/landmark/mobcorpse/nanotrasensoldier)
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/nanotrasen/ranged/smg
|
||||
icon_state = "nanotrasenrangedsmg"
|
||||
icon_living = "nanotrasenrangedsmg"
|
||||
rapid = 1
|
||||
casingtype = /obj/item/ammo_casing/c46x30mm
|
||||
projectilesound = 'sound/weapons/Gunshot_smg.ogg'
|
||||
loot = list(/obj/item/weapon/gun/projectile/automatic/wt550,
|
||||
/obj/effect/landmark/mobcorpse/nanotrasensoldier)
|
||||
@@ -27,7 +27,7 @@
|
||||
player_list |= src
|
||||
update_Login_details()
|
||||
world.update_status()
|
||||
|
||||
|
||||
client.images = null //remove the images such as AIs being unable to see runes
|
||||
client.screen = list() //remove hud items just in case
|
||||
if(hud_used) qdel(hud_used) //remove the hud objects
|
||||
@@ -37,7 +37,8 @@
|
||||
sight |= SEE_SELF
|
||||
|
||||
..()
|
||||
|
||||
if (key != client.key)
|
||||
key = client.key
|
||||
if(loc && !isturf(loc))
|
||||
client.eye = loc
|
||||
client.perspective = EYE_PERSPECTIVE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/mob/Logout()
|
||||
SSnano.on_logout(src)
|
||||
SStgui.on_logout(src)
|
||||
player_list -= src
|
||||
log_access("Logout: [key_name(src)]")
|
||||
if(admin_datums[src.ckey])
|
||||
|
||||
Reference in New Issue
Block a user