Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/tgstation/-tg-station int…
Browse files Browse the repository at this point in the history
…o Boxes_of_the_Spessmen

Conflicts:
	_maps/map_files/TgStation/tgstation.2.1.3.dmm
  • Loading branch information
Incoming5643 committed Sep 27, 2015
2 parents 52123f8 + 4e90fd6 commit 7a4be0e
Show file tree
Hide file tree
Showing 46 changed files with 2,055 additions and 1,886 deletions.
3,343 changes: 1,638 additions & 1,705 deletions _maps/map_files/TgStation/tgstation.2.1.3.dmm

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions code/datums/diseases/advance/advance.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ var/list/archive_diseases = list()

// The order goes from easy to cure to hard to cure.
var/list/advance_cures = list(
"nutriment", "sugar", "orangejuice",
"sodiumchloride", "sugar", "orangejuice",
"spaceacillin", "salglu_solution", "ethanol",
"leporazine", "synaptizine", "lipolicide",
"silver", "gold"
Expand Down Expand Up @@ -424,4 +424,4 @@ var/list/advance_cures = list(
src << "<a href='?_src_=vars;Vars=\ref[D]'>[D.name] - [D.holder]</a>"
*/

#undef RANDOM_STARTING_LEVEL
#undef RANDOM_STARTING_LEVEL
20 changes: 10 additions & 10 deletions code/game/area/areas.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,24 @@
/area/New()
icon_state = ""
layer = 10
master = src //moved outside the spawn(1) to avoid runtimes in lighting.dm when it references src.loc.loc.master ~Carn
master = src
uid = ++global_uid
related = list(src)

if(requires_power)
luminosity = 0
else
power_light = 1 //rastaf0
power_equip = 1 //rastaf0
power_environ = 1 //rastaf0
power_light = 1
power_equip = 1
power_environ = 1
luminosity = 1
lighting_use_dynamic = 0

..()

power_change() // all machines set to current power level, also updates lighting icon
power_change() // all machines set to current power level, also updates icon

blend_mode = BLEND_MULTIPLY // Putting this in the constructure so that it stops the icons being screwed up in the map editor.
blend_mode = BLEND_MULTIPLY // Putting this in the constructor so that it stops the icons being screwed up in the map editor.



Expand Down Expand Up @@ -225,20 +225,21 @@
if ((fire || eject || party) && (!requires_power||power_environ))//If it doesn't require power, can still activate this proc.
if(fire && !eject && !party)
icon_state = "blue"
/*else if(atmosalm && !fire && !eject && !party)
icon_state = "bluenew"*/
else if(!fire && eject && !party)
icon_state = "red"
else if(party && !fire && !eject)
icon_state = "party"
else
icon_state = "blue-red"
invisibility = INVISIBILITY_LIGHTING
else
// new lighting behaviour with obj lights
icon_state = null
invisibility = INVISIBILITY_MAXIMUM

/area/space/updateicon()
icon_state = null
invisibility = INVISIBILITY_MAXIMUM

/*
#define EQUIP 1
Expand Down Expand Up @@ -271,8 +272,7 @@
for(var/area/RA in related)
for(var/obj/machinery/M in RA) // for each machine in the area
M.power_change() // reverify power status (to update icons etc.)
if (fire || eject || party)
RA.updateicon()
RA.updateicon()

/area/proc/usage(chan)
var/used = 0
Expand Down
56 changes: 39 additions & 17 deletions code/game/gamemodes/changeling/changeling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -331,24 +331,30 @@ var/list/slot2type = list("head" = /obj/item/clothing/head/changeling, "wear_mas
return 1
return 0

/datum/changeling/proc/can_absorb_dna(mob/living/carbon/user, mob/living/carbon/human/target)
var/datum/changelingprofile/prof = stored_profiles[1]
if(prof.dna == user.dna && stored_profiles.len >= dna_max)//If our current DNA is the stalest, we gotta ditch it.
user << "<span class='warning'>We have reached our capacity to store genetic information! We must transform before absorbing more.</span>"
return
/datum/changeling/proc/can_absorb_dna(mob/living/carbon/user, mob/living/carbon/human/target, var/verbose=1)
if(stored_profiles.len)
var/datum/changelingprofile/prof = stored_profiles[1]
if(prof.dna == user.dna && stored_profiles.len >= dna_max)//If our current DNA is the stalest, we gotta ditch it.
if(verbose)
user << "<span class='warning'>We have reached our capacity to store genetic information! We must transform before absorbing more.</span>"
return
if(!target)
return
if((target.disabilities & NOCLONE) || (target.disabilities & HUSK))
user << "<span class='warning'>DNA of [target] is ruined beyond usability!</span>"
if(verbose)
user << "<span class='warning'>DNA of [target] is ruined beyond usability!</span>"
return
if(!ishuman(target))//Absorbing monkeys is entirely possible, but it can cause issues with transforming. That's what lesser form is for anyway!
user << "<span class='warning'>We could gain no benefit from absorbing a lesser creature.</span>"
if(verbose)
user << "<span class='warning'>We could gain no benefit from absorbing a lesser creature.</span>"
return
if(has_dna(target.dna))
user << "<span class='warning'>We already have this DNA in storage!</span>"
if(verbose)
user << "<span class='warning'>We already have this DNA in storage!</span>"
return
if(!target.has_dna())
user << "<span class='warning'>[target] is not compatible with our biology.</span>"
if(verbose)
user << "<span class='warning'>[target] is not compatible with our biology.</span>"
return
return 1

Expand All @@ -366,17 +372,24 @@ var/list/slot2type = list("head" = /obj/item/clothing/head/changeling, "wear_mas
prof.name = H.real_name
prof.protected = protect

prof.underwear = H.underwear
prof.undershirt = H.undershirt
prof.socks = H.socks

var/list/slots = list("head", "wear_mask", "back", "wear_suit", "w_uniform", "shoes", "belt", "gloves", "glasses", "ears", "wear_id", "s_store")
for(var/slot in slots)
var/obj/item/I = H.vars[slot]
if(!I)
if(slot in H.vars)
var/obj/item/I = H.vars[slot]
if(!I)
continue
prof.name_list[slot] = I.name
prof.appearance_list[slot] = I.appearance
prof.flags_cover_list[slot] = I.flags_cover
prof.item_color_list[slot] = I.item_color
prof.item_state_list[slot] = I.item_state
prof.exists_list[slot] = 1
else
continue
prof.name_list[slot] = I.name
prof.appearance_list[slot] = I.appearance
prof.flags_cover_list[slot] = I.flags_cover
prof.item_color_list[slot] = I.item_color
prof.item_state_list[slot] = I.item_state
prof.exists_list[slot] = 1

stored_profiles += prof
absorbedcount++
Expand Down Expand Up @@ -406,8 +419,13 @@ var/list/slot2type = list("head" = /obj/item/clothing/head/changeling, "wear_mas
/proc/changeling_transform(var/mob/living/carbon/human/user, var/datum/changelingprofile/chosen_prof)
var/datum/dna/chosen_dna = chosen_prof.dna
user.real_name = chosen_prof.name
user.underwear = chosen_prof.underwear
user.undershirt = chosen_prof.undershirt
user.socks = chosen_prof.socks

chosen_dna.transfer_identity(user, 1)
user.updateappearance(mutcolor_update=1)
user.update_body()
user.domutcheck()

//vars hackery. not pretty, but better than the alternative.
Expand Down Expand Up @@ -452,6 +470,10 @@ var/list/slot2type = list("head" = /obj/item/clothing/head/changeling, "wear_mas
var/list/item_color_list = list()
var/list/item_state_list = list()

var/underwear
var/undershirt
var/socks

/datum/changelingprofile/Destroy()
qdel(dna)
return ..()
7 changes: 4 additions & 3 deletions code/game/gamemodes/changeling/evolution_menu.dm
Original file line number Diff line number Diff line change
Expand Up @@ -370,9 +370,10 @@ var/list/sting_paths
mind.changeling.purchasedpowers+=S
S.on_purchase(src)

var/mob/living/carbon/C = src //only carbons have dna now, so we have to typecaste
var/datum/changelingprofile/prof = mind.changeling.add_profile(C) //not really a point in typecasting here but somebody will probably get mad at me if i dont
mind.changeling.first_prof = prof
var/mob/living/carbon/C = src //only carbons have dna now, so we have to typecaste
if(ishuman(C))
var/datum/changelingprofile/prof = mind.changeling.add_profile(C)
mind.changeling.first_prof = prof
return 1

/datum/changeling/proc/reset()
Expand Down
82 changes: 64 additions & 18 deletions code/game/gamemodes/changeling/powers/augmented_eyesight.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,79 @@

/obj/effect/proc_holder/changeling/augmented_eyesight
name = "Augmented Eyesight"
desc = "Creates heat receptors in our eyes and dramatically increases light sensing ability."
helptext = "Grants us night vision and thermal vision. It may be toggled on or off. We will become more vulnerable to flash-based devices while active."
desc = "Creates heat receptors in our eyes and dramatically increases light sensing ability, or protects your vision from flashes."
helptext = "Grants us thermal vision or flash protection. We will become a lot more vulnerable to flash-based devices while thermal vision is active."
chemical_cost = 0
dna_cost = 2 //Would be 1 without thermal vision
var/active = 0 //Whether or not vision is enhanced

/obj/effect/proc_holder/changeling/augmented_eyesight/sting_action(mob/living/carbon/human/user)
if(!istype(user))
return
active = !active
if(active)
user << "<span class='notice'>We feel a minute twitch in our eyes, and darkness creeps away.</span>"
user.weakeyes = 1
user.sight |= SEE_MOBS
user.permanent_sight_flags |= SEE_MOBS
user.see_in_dark = 8
user.dna.species.invis_sight = SEE_INVISIBLE_MINIMUM
if(user.getorgan(/obj/item/organ/internal/cyberimp/eyes/thermals/ling))
user << "<span class='notice'>Our eyes are protected from flashes.</span>"
var/obj/item/organ/internal/cyberimp/eyes/O = new /obj/item/organ/internal/cyberimp/eyes/shield/ling()
O.Insert(user)

else
user << "<span class='notice'>Our vision dulls. Shadows gather.</span>"
user.weakeyes = 0
user.sight &= ~SEE_MOBS
user.permanent_sight_flags &= ~SEE_MOBS
user.see_in_dark = 0
user.dna.species.invis_sight = initial(user.dna.species.invis_sight)
var/obj/item/organ/internal/cyberimp/eyes/O = new /obj/item/organ/internal/cyberimp/eyes/thermals/ling()
O.Insert(user)

return 1


/obj/effect/proc_holder/changeling/augmented_eyesight/on_refund(mob/user)
user.permanent_sight_flags &= ~SEE_MOBS
user.sight &= ~SEE_MOBS
var/obj/item/organ/internal/cyberimp/eyes/O = user.getorganslot("eye_ling")
O.Remove(user)
qdel(O)





/obj/item/organ/internal/cyberimp/eyes/shield/ling
name = "protective membranes"
desc = "These variable transparency organic membranes will protect you from welders and flashes and heal your eye damage."
icon_state = "ling_eyeshield"
eye_color = null
implant_overlay = null
origin_tech = "biotech=4"
slot = "eye_ling"
status = ORGAN_ORGANIC

/obj/item/organ/internal/cyberimp/eyes/shield/ling/on_life()
..()
if(owner.eye_blind || owner.eye_stat || owner.eye_blurry || (owner.disabilities & BLIND) || (owner.disabilities & NEARSIGHT))
owner.reagents.add_reagent("oculine", 1)

/obj/item/organ/internal/cyberimp/eyes/shield/ling/prepare_eat()
var/obj/S = ..()
S.reagents.add_reagent("oculine", 15)
return S


/obj/item/organ/internal/cyberimp/eyes/thermals/ling
name = "heat receptors"
desc = "These heat receptors dramatically increases eyes light sensing ability."
icon_state = "ling_thermal"
eye_color = null
implant_overlay = null
origin_tech = "biotech=5;magnets=5"
slot = "eye_ling"
status = ORGAN_ORGANIC
aug_message = "You feel a minute twitch in our eyes, and darkness creeps away."

/obj/item/organ/internal/cyberimp/eyes/thermals/ling/emp_act(severity)
return

/obj/item/organ/internal/cyberimp/eyes/thermals/ling/Insert(mob/living/carbon/M, special = 0)
..()
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
H.weakeyes = 1

/obj/item/organ/internal/cyberimp/eyes/thermals/ling/Remove(mob/living/carbon/M, special = 0)
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
H.weakeyes = 0
..()
5 changes: 3 additions & 2 deletions code/game/gamemodes/changeling/powers/headcrab.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@
for(var/obj/item/organ/internal/I in organs)
I.loc = crab
crab.origin = M
if(M)
M.transfer_to(crab)
if(crab.origin)
crab.origin.active = 1
crab.origin.transfer_to(crab)
crab << "<span class='warning'>You burst out of the remains of your former body in a shower of gore!</span>"
user.gib()
feedback_add_details("changeling_powers","LR")
Expand Down
20 changes: 14 additions & 6 deletions code/game/gamemodes/changeling/powers/panacea.dm
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/obj/effect/proc_holder/changeling/panacea
name = "Anatomic Panacea"
desc = "Expels impurifications from our form; curing diseases, removing toxins and radiation, and resetting our genetic code completely."
desc = "Expels impurifications from our form; curing diseases, removing parasites, toxins and radiation, and resetting our genetic code completely."
helptext = "Can be used while unconscious."
chemical_cost = 20
dna_cost = 1
Expand All @@ -9,15 +9,23 @@
//Heals the things that the other regenerative abilities don't.
/obj/effect/proc_holder/changeling/panacea/sting_action(mob/user)
user << "<span class='notice'>We begin cleansing impurities from our form.</span>"

var/obj/item/organ/internal/body_egg/egg = user.getorgan(/obj/item/organ/internal/body_egg)
if(egg)
egg.Remove(user)
user.visible_message("<span class='danger'>[user] vomits up [egg]!</span>", "<span class='userdanger'>[user] vomits up [egg]!</span>")
playsound(user.loc, 'sound/effects/splat.ogg', 50, 1)

var/turf/location = user.loc
if(istype(location, /turf/simulated))
location.add_vomit_floor(user, 1)
egg.loc = location

user.reagents.add_reagent("mutadone", 10)
user.reagents.add_reagent("potass_iodide", 10)
user.reagents.add_reagent("charcoal", 20)

for(var/datum/disease/D in user.viruses)
D.cure()
for(var/obj/item/organ/internal/I in user)
if(istype(I,/obj/item/organ/internal/body_egg/alien_embryo))
I.Remove(user)
I.loc = get_turf(user)
feedback_add_details("changeling_powers","AP")
return 1
return 1
1 change: 1 addition & 0 deletions code/game/gamemodes/changeling/powers/tiny_prick.dm
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@

target.visible_message("<span class='danger'>[target] begins to violenty convulse!</span>","<span class='userdanger'>You feel a tiny prick and a begin to uncontrollably convulse!</span>")
spawn(10)
user.real_name = NewDNA.real_name
NewDNA.transfer_identity(C, transfer_SE=1)
C.updateappearance(mutcolor_update=1)
C.domutcheck()
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/shadowling/shadowling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ Made by Xhuis
if(config.protect_assistant_from_antagonist)
restricted_jobs += "Assistant"

var/shadowlings = max(2, round(num_players()/10))
var/shadowlings = max(2, round(num_players()/20))


while(shadowlings)
Expand Down
Loading

0 comments on commit 7a4be0e

Please sign in to comment.