Merge conflic fix

This commit is contained in:
MrStonedOne
2016-01-03 14:51:14 -08:00
249 changed files with 4185 additions and 3732 deletions
+2 -2
View File
@@ -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
+3 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+7 -1
View File
@@ -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++
+3 -1
View File
@@ -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)
+3 -2
View File
@@ -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 -1
View File
@@ -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])