Merge branch 'master' into surgery

Conflicts:
	code/datums/organs/organ_external.dm
This commit is contained in:
Chinsky
2012-11-22 15:18:42 +04:00
58 changed files with 382 additions and 278 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ mob/proc/custom_emote(var/m_type=1,var/message = null)
if (istype(M, /mob/new_player))
continue
if(findtext(message," snores.")) //Because we have so many sleeping people.
continue
break
if(M.stat == 2 && M.client.ghost_sight && !(M in viewers(src,null)))
M.show_message(message)
@@ -418,8 +418,8 @@
if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]"
//NOTE: the alerts dont reset when youre out of danger. dont blame me,
//blame the person who coded them. Temporary fix added.
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
if (client)
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
if ((blind && stat != 2))
if ((blinded))
@@ -441,7 +441,7 @@
if (!( machine.check_eye(src) ))
reset_view(null)
else
if(!client.adminobs)
if(client && !client.adminobs)
reset_view(null)
return 1
@@ -332,9 +332,8 @@ FUCK YOU MORE FAT CODE -Hawk*/
if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]"
//NOTE: the alerts dont reset when youre out of danger. dont blame me,
//blame the person who coded them. Temporary fix added.
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
if (client)
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
if ((blind && stat != 2))
if ((blinded))
@@ -356,7 +355,7 @@ FUCK YOU MORE FAT CODE -Hawk*/
if (!( machine.check_eye(src) ))
reset_view(null)
else
if(!client.adminobs)
if(client && !client.adminobs)
reset_view(null)
return 1
+3 -3
View File
@@ -242,8 +242,8 @@
healths.icon_state = "health7"
if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]"
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
if (client)
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
if ((blind && stat != 2))
if ((blinded))
@@ -265,7 +265,7 @@
if (!( machine.check_eye(src) ))
reset_view(null)
else
if(!client.adminobs)
if(client && !client.adminobs)
reset_view(null)
return 1
@@ -482,9 +482,9 @@
if (m_type & 1)
for (var/mob/O in viewers(src, null))
for (var/mob/O in get_mobs_in_view(world.view,src))
O.show_message(message, m_type)
else if (m_type & 2)
for (var/mob/O in hearers(src.loc, null))
for (var/mob/O in (hearers(src.loc, null) | get_mobs_in_view(world.view,src)))
O.show_message(message, m_type)
+22 -1
View File
@@ -821,6 +821,12 @@
/mob/living/carbon/human/proc/morph()
set name = "Morph"
set category = "Superpower"
if(stat!=CONSCIOUS)
reset_view(0)
remoteview_target = null
return
if(!(mMorph in mutations))
src.verbs -= /mob/living/carbon/human/proc/morph
return
@@ -894,6 +900,12 @@
/mob/living/carbon/human/proc/remotesay()
set name = "Project mind"
set category = "Superpower"
if(stat!=CONSCIOUS)
reset_view(0)
remoteview_target = null
return
if(!(mRemotetalk in src.mutations))
src.verbs -= /mob/living/carbon/human/proc/remotesay
return
@@ -917,12 +929,19 @@
set name = "Remote View"
set category = "Superpower"
if(stat!=CONSCIOUS)
remoteview_target = null
reset_view(0)
return
if(!(mRemote in src.mutations))
remoteview_target = null
reset_view(0)
src.verbs -= /mob/living/carbon/human/proc/remoteobserve
return
if(client.eye != client.mob)
remoteview_target = null
reset_view(0)
return
@@ -930,15 +949,17 @@
for(var/mob/living/carbon/h in world)
var/turf/temp_turf = get_turf(h)
if(temp_turf.z != 1 && temp_turf.z != 5) //Not on mining or the station.
if((temp_turf.z != 1 && temp_turf.z != 5) || h.stat!=CONSCIOUS) //Not on mining or the station. Or dead
continue
creatures += h
var/mob/target = input ("Who do you want to project your mind to ?") as mob in creatures
if (target)
remoteview_target = target
reset_view(target)
else
remoteview_target = null
reset_view(0)
/mob/living/carbon/human/proc/get_visible_gender()
@@ -61,6 +61,7 @@
switch(M.a_intent)
if("help")
if(health > config.health_threshold_crit)
diary << "\[[time2text(world.timeofday, "hh:mm.ss")]\] CPR BUGHINTING: [M] shakes [src]: health - [health], threshold - [config.health_threshold_crit]. Health details: OX [getOxyLoss()] TX [getToxLoss()] BU [getFireLoss()] BR [getBruteLoss()] Blood: [round(vessel.get_reagent_amount("blood"))] out of 560"
help_shake_act(M)
return 1
// if(M.health < -75) return 0
@@ -55,4 +55,6 @@
var/failed_last_breath = 0 //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks.
var/xylophone = 0 //For the spoooooooky xylophone cooldown
var/xylophone = 0 //For the spoooooooky xylophone cooldown
var/mob/remoteview_target = null
@@ -433,8 +433,9 @@
return
message = "\red <B>[source] is trying to empty [target]'s pockets.</B>"
if("CPR")
if (target.cpr_time >= world.time + 3)
if (!target.cpr_time)
del(src)
target.cpr_time = 0
message = "\red <B>[source] is trying perform CPR on [target]!</B>"
if("id")
message = "\red <B>[source] is trying to take off [target.wear_id] from [target]'s uniform!</B>"
@@ -460,6 +461,7 @@ The else statement is for equipping stuff to empty slots.
It can still be worn/put on as normal.
*/
/obj/effect/equip_e/human/done() //TODO: And rewrite this :< ~Carn
target.cpr_time = 1
if(!source || !target) return //Target or source no longer exist
if(source.loc != s_loc) return //source has moved
if(target.loc != t_loc) return //target has moved
@@ -540,10 +542,7 @@ It can still be worn/put on as normal.
if (target.legcuffed)
strip_item = target.legcuffed
if("CPR")
if (target.cpr_time >= world.time + 30)
del(src)
if ((target.health >= -99.0 && target.health <= 0))
target.cpr_time = world.time
var/suff = min(target.getOxyLoss(), 7)
target.adjustOxyLoss(-suff)
target.updatehealth()
+23 -8
View File
@@ -489,7 +489,7 @@
domutcheck(src,null)
emote("gasp")
updatehealth()
if(damage && organs.len)
var/datum/organ/external/O = pick(organs)
if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage)
@@ -499,6 +499,7 @@
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
var/lung_ruptured = is_lung_ruptured()
if(lung_ruptured && prob(2))
spawn emote("me", 1, "coughs up blood!")
src.drip(10)
@@ -565,6 +566,12 @@
var/obj/location_as_object = loc
location_as_object.handle_internal_lifeform(src, 0)
if(!lung_ruptured && breath)
if(breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5)
if(prob(5))
rupture_lung()
handle_breath(breath)
if(breath)
@@ -713,9 +720,6 @@
apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat")
fire_alert = max(fire_alert, 2)
if(oxyloss >= 50 && prob(oxyloss / 5))
rupture_lung()
//Temporary fixes to the alerts.
return 1
@@ -1004,7 +1008,8 @@
proc/handle_chemicals_in_body()
if(reagents) reagents.metabolize(src)
if(dna && dna.mutantrace == "plant") //couldn't think of a better place to place it, since it handles nutrition -- Urist
// if(dna && dna.mutantrace == "plant") //couldn't think of a better place to place it, since it handles nutrition -- Urist
if(PLANT in mutations)
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
if(isturf(loc)) //else, there's considered to be no light
var/turf/T = loc
@@ -1050,7 +1055,8 @@
if(overeatduration > 1)
overeatduration -= 2 //doubled the unfat rate
if(dna && dna.mutantrace == "plant")
// if(dna && dna.mutantrace == "plant")
if(PLANT in mutations)
if(nutrition < 200)
take_overall_damage(2,0)
@@ -1295,9 +1301,13 @@
sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS)
if(dna)
switch(dna.mutantrace)
if("lizard","metroid")
if("metroid")
see_in_dark = 3
see_invisible = SEE_INVISIBLE_LEVEL_ONE
if("lizard")
see_in_dark = 3
if("tajaran")
see_in_dark = 8
else
see_in_dark = 2
@@ -1470,7 +1480,12 @@
if(machine)
if(!machine.check_eye(src)) reset_view(null)
else
if(!(mRemote in mutations) && !client.adminobs)
var/isRemoteObserve = 0
if((mRemote in mutations) && remoteview_target)
if(remoteview_target.stat==CONSCIOUS)
isRemoteObserve = 1
if(!isRemoteObserve && client && !client.adminobs)
remoteview_target = null
reset_view(null)
return 1
@@ -218,107 +218,133 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/proc/update_body(var/update_icons=1)
if(stand_icon) del(stand_icon)
if(lying_icon) del(lying_icon)
if(dna && dna.mutantrace) return
var/husk_color_mod = rgb(96,88,80)
var/hulk_color_mod = rgb(48,224,40)
var/plant_color_mod = rgb(144,224,144)
var/husk = (HUSK in src.mutations) //100% unnecessary -Agouri //nope, do you really want to iterate through src.mutations repeatedly? -Pete
var/fat = (FAT in src.mutations)
var/hulk = (HULK in src.mutations)
var/skeleton = (SKELETON in src.mutations)
var/plant = (PLANT in src.mutations)
var/g = "m"
if(gender == FEMALE) g = "f"
// whether to draw the individual limbs
var/individual_limbs = 0
//Base mob icon
if(husk)
stand_icon = new /icon('icons/mob/human.dmi', "husk_s")
lying_icon = new /icon('icons/mob/human.dmi', "husk_l")
else if(fat)
stand_icon = new /icon('icons/mob/human.dmi', "fatbody_s")
lying_icon = new /icon('icons/mob/human.dmi', "fatbody_l")
else if(skeleton)
stand_icon = new /icon('icons/mob/human.dmi', "skeleton_s")
lying_icon = new /icon('icons/mob/human.dmi', "skeleton_l")
var/icon/icobase
if(skeleton)
icobase = 'icons/mob/human_races/r_skeleton.dmi'
else if(dna)
switch(dna.mutantrace)
if("tajaran")
icobase = 'icons/mob/human_races/r_tajaran.dmi'
if("lizard")
icobase = 'icons/mob/human_races/r_lizard.dmi'
if("skrell")
icobase = 'icons/mob/human_races/r_skrell.dmi'
else
icobase = 'icons/mob/human_races/r_human.dmi'
else
stand_icon = new /icon('icons/mob/human.dmi', "torso_[g]_s")
lying_icon = new /icon('icons/mob/human.dmi', "torso_[g]_l")
individual_limbs = 1
icobase = 'icons/mob/human_races/r_human.dmi'
// Draw each individual limb
if(individual_limbs)
stand_icon.Blend(new /icon('icons/mob/human.dmi', "chest_[g]_s"), ICON_OVERLAY)
lying_icon.Blend(new /icon('icons/mob/human.dmi', "chest_[g]_l"), ICON_OVERLAY)
if(!skeleton)
stand_icon = new /icon(icobase, "torso_[g][fat?"_fat":""]")
if(husk)
stand_icon.ColorTone(husk_color_mod)
else if(hulk)
// stand_icon.ColorTone(hulk_color_mod)
var/list/TONE = ReadRGB(hulk_color_mod)
stand_icon.MapColors(rgb(TONE[1],0,0),rgb(0,TONE[2],0),rgb(0,0,TONE[3]))
else if(plant)
stand_icon.ColorTone(plant_color_mod)
else
stand_icon = new /icon(icobase, "torso")
var/datum/organ/external/head = get_organ("head")
if(head && !(head.status & ORGAN_DESTROYED))
stand_icon.Blend(new /icon('icons/mob/human.dmi', "head_[g]_s"), ICON_OVERLAY)
lying_icon.Blend(new /icon('icons/mob/human.dmi', "head_[g]_l"), ICON_OVERLAY)
var/datum/organ/external/head = get_organ("head")
var/has_head = 0
if(head && !(head.status & ORGAN_DESTROYED))
has_head = 1
for(var/datum/organ/external/part in organs)
if(!istype(part, /datum/organ/external/groin) \
&& !istype(part, /datum/organ/external/chest) \
&& !istype(part, /datum/organ/external/head) \
&& !(part.status & ORGAN_DESTROYED))
var/icon/temp = new /icon('human.dmi', "[part.icon_name]_s")
if(part.status & ORGAN_ROBOT) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
for(var/datum/organ/external/part in organs)
if(!istype(part, /datum/organ/external/chest) && !(part.status & ORGAN_DESTROYED))
var/icon/temp
if(istype(part, /datum/organ/external/groin))
if(skeleton)
temp = new /icon(icobase, "groin")
else
temp = new /icon(icobase, "groin_[g]")
else if(istype(part, /datum/organ/external/head))
if(skeleton)
temp = new /icon(icobase, "head")
else
temp = new /icon(icobase, "head_[g]")
else
temp = new /icon(icobase, "[part.icon_name]")
if(part.status & ORGAN_ROBOT)
temp.GrayScale()
else if(!skeleton)
if(husk)
temp.ColorTone(husk_color_mod)
else if(hulk)
// temp.ColorTone(hulk_color_mod)
var/list/TONE = ReadRGB(hulk_color_mod)
temp.MapColors(rgb(TONE[1],0,0),rgb(0,TONE[2],0),rgb(0,0,TONE[3]))
else if(plant)
temp.ColorTone(plant_color_mod)
//That part makes left and right legs drawn topmost and lowermost when human looks WEST or EAST
//And no change in rendering for other parts (they icon_position is 0, so goes to 'else' part)
if(part.icon_position&(LEFT|RIGHT))
var/icon/temp2 = new('icons/mob/human.dmi',"blank")
temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH)
temp2.Insert(new/icon(temp,dir=SOUTH),dir=SOUTH)
if(!(part.icon_position & LEFT))
temp2.Insert(new/icon(temp,dir=EAST),dir=EAST)
if(!(part.icon_position & RIGHT))
temp2.Insert(new/icon(temp,dir=WEST),dir=WEST)
stand_icon.Blend(temp2, ICON_OVERLAY)
temp2 = new('icons/mob/human.dmi',"blank")
if(part.icon_position & LEFT)
temp2.Insert(new/icon(temp,dir=EAST),dir=EAST)
if(part.icon_position & RIGHT)
temp2.Insert(new/icon(temp,dir=WEST),dir=WEST)
stand_icon.Blend(temp2, ICON_UNDERLAY)
else
stand_icon.Blend(temp, ICON_OVERLAY)
temp = new /icon('human.dmi', "[part.icon_name]_l")
if(part.status & ORGAN_ROBOT) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
lying_icon.Blend(temp , ICON_OVERLAY)
stand_icon.Blend(new /icon('human.dmi', "groin_[g]_s"), ICON_OVERLAY)
lying_icon.Blend(new /icon('human.dmi', "groin_[g]_l"), ICON_OVERLAY)
if (husk)
var/icon/husk_s = new /icon('human.dmi', "husk_s")
var/icon/husk_l = new /icon('human.dmi', "husk_l")
for(var/datum/organ/external/part in organs)
if(!istype(part, /datum/organ/external/groin) \
&& !istype(part, /datum/organ/external/chest) \
&& !istype(part, /datum/organ/external/head) \
&& (part.status & ORGAN_DESTROYED))
husk_s.Blend(new /icon('dam_mask.dmi', "[part.icon_name]"), ICON_SUBTRACT)
husk_l.Blend(new /icon('dam_mask.dmi', "[part.icon_name]2"), ICON_SUBTRACT)
stand_icon.Blend(husk_s, ICON_OVERLAY)
lying_icon.Blend(husk_l, ICON_OVERLAY)
//Skin tone
if(!skeleton)
if(!skeleton && !husk && !hulk && !plant)
if(s_tone >= 0)
stand_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
lying_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
else
stand_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
lying_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
//Eyes
if(!skeleton)
var/icon/eyes_s = new/icon('icons/mob/human_face.dmi', "eyes_s")
var/icon/eyes_l = new/icon('icons/mob/human_face.dmi', "eyes_l")
eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
eyes_l.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
stand_icon.Blend(eyes_s, ICON_OVERLAY)
lying_icon.Blend(eyes_l, ICON_OVERLAY)
// Note: These used to be in update_face(), and the fact they're here will make it difficult to create a disembodied head
var/icon/eyes_s = new/icon('icons/mob/human_face.dmi', "eyes_s")
var/icon/eyes_l = new/icon('icons/mob/human_face.dmi', "eyes_l")
eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
eyes_l.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
stand_icon.Blend(eyes_s, ICON_OVERLAY)
lying_icon.Blend(eyes_l, ICON_OVERLAY)
if(husk)
var/icon/mask = new(stand_icon)
var/icon/husk_over = new(icobase,"overlay_husk")
mask.MapColors(0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,0)
husk_over.Blend(mask, ICON_ADD)
stand_icon.Blend(husk_over, ICON_OVERLAY)
if(has_head)
//Eyes
if(!skeleton)
var/icon/eyes_s = new/icon('icons/mob/human_face.dmi', "eyes_s")
eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
stand_icon.Blend(eyes_s, ICON_OVERLAY)
//Mouth (lipstick!)
if(lip_style) //skeletons are allowed to wear lipstick no matter what you think, agouri.
stand_icon.Blend(new/icon('icons/mob/human_face.dmi', "lips_[lip_style]_s"), ICON_OVERLAY)
lying_icon.Blend(new/icon('icons/mob/human_face.dmi', "lips_[lip_style]_l"), ICON_OVERLAY)
//Underwear
if(underwear >0 && underwear < 12)
if(!fat && !skeleton)
stand_icon.Blend(new /icon('icons/mob/human.dmi', "underwear[underwear]_[g]_s"), ICON_OVERLAY)
lying_icon = stand_icon.MakeLying()
if(update_icons)
update_icons()
@@ -417,27 +443,29 @@ proc/get_damage_icon_part(damage_state, body_part)
var/fat
if( FAT in mutations )
fat = "fat"
var/g = "m"
if (gender == FEMALE) g = "f"
// var/g = "m"
// if (gender == FEMALE) g = "f"
//BS12 EDIT
if(dna)
switch(dna.mutantrace)
if("golem","metroid")
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_l")
overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_s")
if("lizard", "tajaran", "skrell")
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[g]_l")
overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[g]_s")
if("plant")
if(stat == DEAD) //TODO
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace]_d")
else
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_l")
overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_s")
var/icon/I = new('icons/effects/genetics.dmi',"[dna.mutantrace][fat]_s")
overlays_standing[MUTANTRACE_LAYER] = image(I)
overlays_lying[MUTANTRACE_LAYER] = image(I.MakeLying())
// if("lizard", "tajaran", "skrell")
// overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[g]_l")
// overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[g]_s")
// if("plant")
// if(stat == DEAD) //TODO
// overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace]_d")
// else
// overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_l")
// overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_s")
else
overlays_lying[MUTANTRACE_LAYER] = null
overlays_standing[MUTANTRACE_LAYER] = null
update_body(0)
if(!dna || !(dna.mutantrace in list("golem","metroid")))
update_body(0)
update_hair(0)
if(update_icons) update_icons()
@@ -551,7 +551,7 @@
if (!( machine.check_eye(src) ))
reset_view(null)
else
if(!client.adminobs)
if(client && !client.adminobs)
reset_view(null)
return 1
@@ -25,7 +25,7 @@
dna = new /datum/dna( null )
dna.real_name = real_name
dna.uni_identity = "00600200A00E0110148FC01300B009"
dna.struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4BB8"
dna.struc_enzymes = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B0FD6"
dna.unique_enzymes = md5(name)
//////////blah
var/gendervar
+5 -4
View File
@@ -1,6 +1,7 @@
/mob/living/Logout()
..()
if(!key && mind) //key and mind have become seperated.
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
if(!immune_to_ssd && sleeping < 2 && mind.active)
sleeping = 2
if (mind)
if(!key) //key and mind have become seperated.
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
if(!immune_to_ssd && sleeping < 2 && mind.active)
sleeping = 2
@@ -195,10 +195,13 @@
m_type = 2
if("law")
message = "<B>[src]</B> shows its legal authorization barcode."
if (istype(module,/obj/item/weapon/robot_module/security))
message = "<B>[src]</B> shows its legal authorization barcode."
playsound(src.loc, 'biamthelaw.ogg', 50, 0)
m_type = 2
playsound(src.loc, 'biamthelaw.ogg', 50, 0)
m_type = 2
else
src << "You are not THE LAW, pal."
else
src << text("Invalid Emote: []", act)
if ((message && src.stat == 0))
@@ -255,7 +255,7 @@
if (!( src.machine.check_eye(src) ))
src.reset_view(null)
else
if(!client.adminobs)
if(client && !client.adminobs)
reset_view(null)
return 1
+1 -53
View File
@@ -147,24 +147,7 @@
return 1
if(href_list["ready"])
var/num_old_slots = GetAvailableAlienPlayerSlots()
var/new_slots = num_old_slots
if(!ready)
if(num_old_slots >= 1 || preferences.species == "Human")
ready = 1
new_slots = GetAvailableAlienPlayerSlots()
else
src << "\red Unable to declare ready. Too many players have already elected to play as aliens."
else
ready = 0
new_slots = GetAvailableAlienPlayerSlots()
if(num_old_slots < 1 && new_slots >= 1)
for(var/mob/new_player/N in world)
N << "\blue A new alien player slot has opened."
else if(num_old_slots >= 1 && new_slots < 1)
for(var/mob/new_player/N in world)
N << "\red New alien players can no longer enter the game."
ready = !ready
if(href_list["refresh"])
src << browse(null, "window=playersetup") //closes the player setup window
@@ -205,9 +188,6 @@
if(!is_alien_whitelisted(src, preferences.species) && config.usealienwhitelist)
src << alert("You are currently not whitelisted to play [preferences.species].")
return 0
else if(GetAvailableAlienPlayerSlots() < 1)
src << "\red Unable to join game. Too many players have already joined as aliens."
return 0
LateChoices()
@@ -356,15 +336,10 @@
src << alert("[rank] is not available. Please try another.")
return 0
var/num_old_slots = GetAvailableAlienPlayerSlots()
var/new_slots = num_old_slots
if(preferences.species != "Human")
if(!is_alien_whitelisted(src, preferences.species) && config.usealienwhitelist)
src << alert("You are currently not whitelisted to play [preferences.species].")
return 0
else if(num_old_slots < 1)
src << "\red Unable to join game. Too many players have already joined as aliens."
return 0
job_master.AssignRole(src, rank, 1)
@@ -384,14 +359,6 @@
ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn
AnnounceArrival(character, rank)
new_slots = GetAvailableAlienPlayerSlots()
if(num_old_slots < 1 && new_slots >= 1)
for(var/mob/new_player/N in world)
N << "\blue A new alien player slot has opened."
else if(num_old_slots >= 1 && new_slots < 1)
for(var/mob/new_player/N in world)
N << "\red New alien players can no longer enter the game."
else
character.Robotize()
del(src)
@@ -492,22 +459,3 @@
proc/close_spawn_windows()
src << browse(null, "window=latechoices") //closes late choices window
src << browse(null, "window=playersetup") //closes the player setup window
//limits the number of alien players in a game
/proc/GetAvailableAlienPlayerSlots()
if(!config.limitalienplayers)
return 9999
var/num_players = 0
//check new players
for(var/mob/new_player/N in world)
if(N.preferences && N.ready)
num_players++
//check players already spawned, only count humans or aliens
for(var/mob/living/carbon/human/H in world)
if(H.ckey)
num_players++
return round(num_players * (config.alien_to_human_ratio / 100))