diff --git a/code/datums/underwear/undershirts.dm b/code/datums/underwear/undershirts.dm index 2f0de005ca..4eba1c9378 100644 --- a/code/datums/underwear/undershirts.dm +++ b/code/datums/underwear/undershirts.dm @@ -67,4 +67,20 @@ /datum/category_item/underwear/undershirt/shirt_blue_striped name = "Shirt, blue stripes" - icon_state = "shirt_stripes_s" \ No newline at end of file + icon_state = "shirt_stripes_s" + +/datum/category_item/underwear/undershirt/bowling + name = "Bowling Shirt, Red" + icon_state = "bowling" + +/datum/category_item/underwear/undershirt/bowlingp + name = "Bowling Shirt, Pink" + icon_state = "bowlingp" + +/datum/category_item/underwear/undershirt/bowlinga + name = "Bowling Shirt, Aqua" + icon_state = "bowlinga" + +/datum/category_item/underwear/undershirt/bowlingw + name = "Bowling Shirt, White" + icon_state = "bowlingw" \ No newline at end of file diff --git a/code/game/gamemodes/changeling/generic_equip_procs.dm b/code/game/gamemodes/changeling/generic_equip_procs.dm index 109f326ab0..e8ed12a446 100644 --- a/code/game/gamemodes/changeling/generic_equip_procs.dm +++ b/code/game/gamemodes/changeling/generic_equip_procs.dm @@ -1,14 +1,19 @@ //This is a generic proc that should be called by other ling armor procs to equip them. -/mob/proc/changeling_generic_armor(var/armor_type, var/helmet_type, var/boot_type) - var/datum/changeling/changeling = changeling_power(20,1,100,CONSCIOUS) - if(!changeling) - return +/mob/proc/changeling_generic_armor(var/armor_type, var/helmet_type, var/boot_type, var/chem_cost) if(!ishuman(src)) return 0 var/mob/living/carbon/human/M = src + if(istype(M.wear_suit, armor_type) || istype(M.head, helmet_type) || istype(M.shoes, boot_type)) + chem_cost = 0 + + var/datum/changeling/changeling = changeling_power(chem_cost, 1, 100, CONSCIOUS) + + if(!changeling) + return + //First, check if we're already wearing the armor, and if so, take it off. if(istype(M.wear_suit, armor_type) || istype(M.head, helmet_type) || istype(M.shoes, boot_type)) M.visible_message("[M] casts off their [M.wear_suit.name]!", @@ -39,7 +44,7 @@ var/obj/item/clothing/shoes/B = new boot_type(src) src.equip_to_slot_or_del(B, slot_shoes) - src.mind.changeling.chem_charges -= 20 + src.mind.changeling.chem_charges -= chem_cost playsound(src, 'sound/effects/blobattack.ogg', 30, 1) M.update_inv_wear_suit() M.update_inv_head() diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm index 0ed78ddb39..26b8283a36 100644 --- a/code/game/gamemodes/changeling/powers/armblade.dm +++ b/code/game/gamemodes/changeling/powers/armblade.dm @@ -15,7 +15,6 @@ if(src.mind.changeling.recursive_enhancement) if(changeling_generic_weapon(/obj/item/weapon/melee/arm_blade/greater)) src << "We prepare an extra sharp blade." - src.mind.changeling.recursive_enhancement = 0 return 1 else diff --git a/code/game/gamemodes/changeling/powers/armor.dm b/code/game/gamemodes/changeling/powers/armor.dm index 6241f2a54d..ac98f15c40 100644 --- a/code/game/gamemodes/changeling/powers/armor.dm +++ b/code/game/gamemodes/changeling/powers/armor.dm @@ -9,7 +9,7 @@ /mob/proc/changeling_spacesuit() set category = "Changeling" set name = "Organic Space Suit (20)" - if(changeling_generic_armor(/obj/item/clothing/suit/space/changeling,/obj/item/clothing/head/helmet/space/changeling,/obj/item/clothing/shoes/magboots/changeling)) + if(changeling_generic_armor(/obj/item/clothing/suit/space/changeling,/obj/item/clothing/head/helmet/space/changeling,/obj/item/clothing/shoes/magboots/changeling, 20)) return 1 return 0 @@ -25,7 +25,7 @@ set category = "Changeling" set name = "Organic Spacearmor (20)" - if(changeling_generic_armor(/obj/item/clothing/suit/space/changeling/armored,/obj/item/clothing/head/helmet/space/changeling/armored,/obj/item/clothing/shoes/magboots/changeling/armored)) + if(changeling_generic_armor(/obj/item/clothing/suit/space/changeling/armored,/obj/item/clothing/head/helmet/space/changeling/armored,/obj/item/clothing/shoes/magboots/changeling/armored, 20)) return 1 return 0 diff --git a/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm b/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm index bfe97bf19e..8a595f8d9e 100644 --- a/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm +++ b/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm @@ -26,7 +26,6 @@ if(src.mind.changeling.recursive_enhancement) if(changeling_generic_weapon(/obj/item/weapon/electric_hand/efficent)) src << "We will shock others more efficently." - src.mind.changeling.recursive_enhancement = 0 return 1 else if(changeling_generic_weapon(/obj/item/weapon/electric_hand,0)) //Chemical cost is handled in the equip proc. diff --git a/code/game/gamemodes/changeling/powers/blind_sting.dm b/code/game/gamemodes/changeling/powers/blind_sting.dm index ceb6e00ae1..a9f9d2346e 100644 --- a/code/game/gamemodes/changeling/powers/blind_sting.dm +++ b/code/game/gamemodes/changeling/powers/blind_sting.dm @@ -21,7 +21,6 @@ if(src.mind.changeling.recursive_enhancement) duration = duration + 150 src << "They will be deprived of sight for longer." - src.mind.changeling.recursive_enhancement = 0 spawn(duration) T.disabilities &= ~NEARSIGHTED T.eye_blind = 10 diff --git a/code/game/gamemodes/changeling/powers/boost_range.dm b/code/game/gamemodes/changeling/powers/boost_range.dm index 65cdc00ca2..fd15d94dae 100644 --- a/code/game/gamemodes/changeling/powers/boost_range.dm +++ b/code/game/gamemodes/changeling/powers/boost_range.dm @@ -23,7 +23,6 @@ if(src.mind.changeling.recursive_enhancement) range = range + 3 src << "We can fire our next sting from five squares away." - src.mind.changeling.recursive_enhancement = 0 changeling.sting_range = range src.verbs -= /mob/proc/changeling_boost_range spawn(5) diff --git a/code/game/gamemodes/changeling/powers/cryo_sting.dm b/code/game/gamemodes/changeling/powers/cryo_sting.dm index ee11371dac..681e46e737 100644 --- a/code/game/gamemodes/changeling/powers/cryo_sting.dm +++ b/code/game/gamemodes/changeling/powers/cryo_sting.dm @@ -20,7 +20,6 @@ if(src.mind.changeling.recursive_enhancement) inject_amount = inject_amount * 1.5 src << "We inject extra chemicals." - src.mind.changeling.recursive_enhancement = 0 if(T.reagents) T.reagents.add_reagent("cryotoxin", inject_amount) feedback_add_details("changeling_powers","CS") diff --git a/code/game/gamemodes/changeling/powers/deaf_sting.dm b/code/game/gamemodes/changeling/powers/deaf_sting.dm index 0bf5d0f326..fcf5bfab7d 100644 --- a/code/game/gamemodes/changeling/powers/deaf_sting.dm +++ b/code/game/gamemodes/changeling/powers/deaf_sting.dm @@ -19,7 +19,6 @@ if(src.mind.changeling.recursive_enhancement) duration = duration + 100 src << "They will be unable to hear for a little longer." - src.mind.changeling.recursive_enhancement = 0 T << "Your ears pop and begin ringing loudly!" T.sdisabilities |= DEAF spawn(duration) T.sdisabilities &= ~DEAF diff --git a/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm b/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm index c1152e8364..4a50140003 100644 --- a/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm +++ b/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm @@ -20,7 +20,6 @@ if(src.mind.changeling.recursive_enhancement) i = i * 2 src << "Our toxin will be extra potent, when it strikes." - src.mind.changeling.recursive_enhancement = 0 spawn(2 MINUTES) if(T) //We might not exist in two minutes, for whatever reason. T << "You feel a burning sensation flowing through your veins!" diff --git a/code/game/gamemodes/changeling/powers/enfeebling_string.dm b/code/game/gamemodes/changeling/powers/enfeebling_string.dm index 240cac473d..9584da1e55 100644 --- a/code/game/gamemodes/changeling/powers/enfeebling_string.dm +++ b/code/game/gamemodes/changeling/powers/enfeebling_string.dm @@ -23,7 +23,6 @@ if(src.mind.changeling.recursive_enhancement) effect = effect + 20 src << "We make them extremely weak." - src.mind.changeling.recursive_enhancement = 0 var/health_to_take_away = H.maxHealth * (effect / 100) H.maxHealth -= health_to_take_away diff --git a/code/game/gamemodes/changeling/powers/epinephrine_overdose.dm b/code/game/gamemodes/changeling/powers/epinephrine_overdose.dm index 9c28fcadc4..3875a4b4fa 100644 --- a/code/game/gamemodes/changeling/powers/epinephrine_overdose.dm +++ b/code/game/gamemodes/changeling/powers/epinephrine_overdose.dm @@ -31,7 +31,6 @@ if(src.mind.changeling.recursive_enhancement) src << "We feel unstoppable." - src.mind.changeling.recursive_enhancement = 0 spawn(1) var/i = 30 while(i) diff --git a/code/game/gamemodes/changeling/powers/fleshmend.dm b/code/game/gamemodes/changeling/powers/fleshmend.dm index 0502a35f28..f7760e9ce6 100644 --- a/code/game/gamemodes/changeling/powers/fleshmend.dm +++ b/code/game/gamemodes/changeling/powers/fleshmend.dm @@ -23,7 +23,6 @@ if(src.mind.changeling.recursive_enhancement) heal_amount = heal_amount * 2 src << "We will heal much faster." - src.mind.changeling.recursive_enhancement = 0 spawn(0) src << "We begin to heal ourselves." diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm index 09c026aadb..055cf3e28b 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/game/gamemodes/changeling/powers/panacea.dm @@ -32,7 +32,6 @@ if(src.mind.changeling.recursive_enhancement) heal_amount = heal_amount * 2 src << "We will heal much faster." - src.mind.changeling.recursive_enhancement = 0 for(var/i = 0, i<10,i++) if(C) diff --git a/code/game/gamemodes/changeling/powers/rapid_regen.dm b/code/game/gamemodes/changeling/powers/rapid_regen.dm index 7df99753d4..eddf83292e 100644 --- a/code/game/gamemodes/changeling/powers/rapid_regen.dm +++ b/code/game/gamemodes/changeling/powers/rapid_regen.dm @@ -25,7 +25,6 @@ if(src.mind.changeling.recursive_enhancement) healing_amount = C.maxHealth src << "We completely heal ourselves." - src.mind.changeling.recursive_enhancement = 0 spawn(0) C.adjustBruteLoss(-healing_amount) C.adjustFireLoss(-healing_amount) diff --git a/code/game/gamemodes/changeling/powers/recursive_enhancement.dm b/code/game/gamemodes/changeling/powers/recursive_enhancement.dm index 9b42ee68e0..9362333c57 100644 --- a/code/game/gamemodes/changeling/powers/recursive_enhancement.dm +++ b/code/game/gamemodes/changeling/powers/recursive_enhancement.dm @@ -1,6 +1,6 @@ /datum/power/changeling/recursive_enhancement name = "Recursive Enhancement" - desc = "We cause our next ability use to have increased or additional effects." + desc = "We cause our abilities to have increased or additional effects." helptext = "To check the effects for each ability, check the blue text underneath the ability in the evolution menu." ability_icon_state = "ling_recursive_enhancement" genomecost = 3 @@ -9,16 +9,16 @@ //Increases macimum chemical storage /mob/proc/changeling_recursive_enhancement() set category = "Changeling" - set name = "Recursive Enhancement (10)" - set desc = "Empowers our next ability." - var/datum/changeling/changeling = changeling_power(10,0,100,UNCONSCIOUS) + set name = "Recursive Enhancement" + set desc = "Empowers our abilities." + var/datum/changeling/changeling = changeling_power(0,0,100,UNCONSCIOUS) if(!changeling) return 0 if(src.mind.changeling.recursive_enhancement) - src << "We have already prepared to enhance our next ability." + src << "We will no longer empower our abilities." + src.mind.changeling.recursive_enhancement = 0 return 0 - src << "We empower ourselves. Our next ability will be extra potent." + src << "We empower ourselves. Our abilities will now be extra potent." src.mind.changeling.recursive_enhancement = 1 - src.mind.changeling.chem_charges -= 10 feedback_add_details("changeling_powers","RE") return 1 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/respec.dm b/code/game/gamemodes/changeling/powers/respec.dm index 661a761d8c..7910ceaf7c 100644 --- a/code/game/gamemodes/changeling/powers/respec.dm +++ b/code/game/gamemodes/changeling/powers/respec.dm @@ -12,6 +12,8 @@ ling_datum.purchased_powers = list() //Then wipe all the powers we bought. ling_datum.geneticpoints = ling_datum.max_geneticpoints //Now refund our points to the maximum. ling_datum.chem_recharge_rate = 0.5 //If glands were bought, revert that upgrade. + src.mind.changeling.recursive_enhancement = 0 //Ensures this is cleared + ling_datum.chem_storage = 50 if(ishuman(src)) var/mob/living/carbon/human/H = src diff --git a/code/game/gamemodes/changeling/powers/shriek.dm b/code/game/gamemodes/changeling/powers/shriek.dm index 24d024467a..b9303a3a81 100644 --- a/code/game/gamemodes/changeling/powers/shriek.dm +++ b/code/game/gamemodes/changeling/powers/shriek.dm @@ -40,7 +40,6 @@ if(src.mind.changeling.recursive_enhancement) range = range * 2 src << "We are extra loud." - src.mind.changeling.recursive_enhancement = 0 for(var/mob/living/M in range(range, src)) if(iscarbon(M)) diff --git a/code/game/gamemodes/changeling/powers/silence_sting.dm b/code/game/gamemodes/changeling/powers/silence_sting.dm index c16d74ff59..9ebe8adf7c 100644 --- a/code/game/gamemodes/changeling/powers/silence_sting.dm +++ b/code/game/gamemodes/changeling/powers/silence_sting.dm @@ -19,7 +19,6 @@ if(src.mind.changeling.recursive_enhancement) duration = duration + 10 src << "They will be unable to cry out in fear for a little longer." - src.mind.changeling.recursive_enhancement = 0 T.silent += duration feedback_add_details("changeling_powers","SS") return 1 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/visible_camouflage.dm b/code/game/gamemodes/changeling/powers/visible_camouflage.dm index 99bb7762fa..00e31cc932 100644 --- a/code/game/gamemodes/changeling/powers/visible_camouflage.dm +++ b/code/game/gamemodes/changeling/powers/visible_camouflage.dm @@ -39,7 +39,6 @@ if(src.mind.changeling.recursive_enhancement) H.invisibility = INVISIBILITY_OBSERVER src << "We are now truly invisible." - src.mind.changeling.recursive_enhancement = 0 while(H.m_intent == "walk" && H.mind.changeling.cloaked && !H.stat) //This loop will keep going until the player uncloaks. if(mind.changeling.chem_recharge_rate != 0) //Without this, there is an exploit that can be done, if one buys engorged chem sacks while cloaked. diff --git a/code/modules/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm index d26413c19c..6220a01c81 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head.dm @@ -251,4 +251,20 @@ /datum/gear/head/sombrero display_name = "sombrero" - path = /obj/item/clothing/head/sombrero \ No newline at end of file + path = /obj/item/clothing/head/sombrero + +/datum/gear/head/flatcapg + display_name = "flat cap" + path = /obj/item/clothing/head/flatcap/grey + +/datum/gear/head/flatcapg/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) + +/datum/gear/head/bow + display_name = "hair bow" + path = /obj/item/clothing/head/hairflower/bow + +/datum/gear/head/bow/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) \ No newline at end of file diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 1c9c069987..f65b5373bb 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -32,6 +32,12 @@ /obj/item/clothing/head/hairflower/orange icon_state = "hairflower_orange" +/obj/item/clothing/head/hairflower/bow + icon_state = "bow" + name = "hair bow" + desc = "A ribbon tied into a bow with a clip on the back to attach to hair." + item_state_slots = list(slot_r_hand_str = "pill", slot_l_hand_str = "pill") + /obj/item/clothing/head/powdered_wig name = "powdered wig" desc = "A powdered wig." @@ -144,6 +150,10 @@ item_state_slots = list(slot_r_hand_str = "detective", slot_l_hand_str = "detective") siemens_coefficient = 0.9 //...what? +/obj/item/clothing/head/flatcap/grey + icon_state = "flat_capg" + item_state_slots = list(slot_r_hand_str = "greysoft", slot_l_hand_str = "greysoft") + /obj/item/clothing/head/pirate name = "pirate hat" desc = "Yarr." @@ -305,4 +315,4 @@ name = "sombrero" desc = "A wide-brimmed hat popularly worn in Mexico." icon_state = "sombrero" - body_parts_covered = 0 \ No newline at end of file + body_parts_covered = 0 diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 6a9952ef07..f1a84d6d9d 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -589,12 +589,15 @@ if("swag", "stopsway") src.animate_tail_stop() + if("vomit") + vomit() + return + if ("help") - src << {"blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, -cry, custom, deathgasp, drool, eyebrow, frown, gasp, giggle, groan, grumble, handshake, hug-(none)/mob, glare-(none)/mob, -grin, laugh, look-(none)/mob, moan, mumble, nod, pale, point-atom, raise, salute, shake, shiver, shrug, -sigh, signal-#1-10, smile, sneeze, sniff, snore, stare-(none)/mob, tremble, twitch, twitch_s, whimper, -wink, yawn, swish, sway/wag, fastsway/qwag, stopsway/swag"} + src << {"blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, cry, custom, deathgasp, drool, eyebrow, fastsway/qwag, +frown, gasp, giggle, glare-(none)/mob, grin, groan, grumble, handshake, hug-(none)/mob, laugh, look-(none)/mob, moan, mumble, nod, pale, point-atom, +raise, salute, shake, shiver, shrug, sigh, signal-#1-10, smile, sneeze, sniff, snore, stare-(none)/mob, stopsway/swag, sway/wag, swish, tremble, twitch, +twitch_s, vomit, whimper, wink, yawn"} else src << "\blue Unusable emote '[act]'. Say *help for a list." diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm index f54945b51d..5b40922642 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -42,6 +42,7 @@ joint = "hip" dislocated = -1 gendered_icon = 1 + cannot_amputate = 1 organ_rel_size = 30 /obj/item/organ/external/arm diff --git a/code/modules/projectiles/dnalocking.dm b/code/modules/projectiles/dnalocking.dm index 9acbf7f1bf..394600fc61 100644 --- a/code/modules/projectiles/dnalocking.dm +++ b/code/modules/projectiles/dnalocking.dm @@ -2,6 +2,7 @@ name = "DNA Chip Lock" icon = 'icons/obj/ammo.dmi' icon_state = "dnalockchip" + desc = "A state of the art technological chip that can be installed in a firearm. It allows the user to store their DNA and lock the gun's use from unwanted users." w_class = 1 origin_tech = list(TECH_COMBAT = 4, TECH_DATA = 4, TECH_BIO = 4) diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 80112690b3..9a9fa74292 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -4,6 +4,7 @@ damage = 0 damage_type = BURN check_armour = "energy" + var/flash_strength = 10 //releases a burst of light on impact or after travelling a distance @@ -24,6 +25,15 @@ for (var/mob/living/carbon/M in viewers(T, flash_range)) if(M.eyecheck() < 1) M.flash_eyes() + if(ishuman(M)) + var/mob/living/carbon/human/H = M + flash_strength *= H.species.flash_mod + + if(flash_strength > 0) + H.confused = max(H.confused, flash_strength + 5) + H.eye_blind = max(H.eye_blind, flash_strength) + H.eye_blurry = max(H.eye_blurry, flash_strength + 5) + //snap pop playsound(src, 'sound/effects/snap.ogg', 50, 1) @@ -35,11 +45,13 @@ new /obj/effect/decal/cleanable/ash(src.loc) //always use src.loc so that ash doesn't end up inside windows new /obj/effect/effect/smoke/illumination(T, 5, brightness, brightness, light_colour) + //blinds people like the flash round, but can also be used for temporary illumination /obj/item/projectile/energy/flash/flare damage = 10 flash_range = 1 brightness = 15 + flash_strength = 20 /obj/item/projectile/energy/flash/flare/on_impact(var/atom/A) light_colour = pick("#e58775", "#ffffff", "#90ff90", "#a09030") diff --git a/html/changelog.html b/html/changelog.html index 00e8b69a29..fd4010ec16 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,30 @@ -->
+

03 September 2016

+

Yosh updated:

+ +

Yoshax updated:

+ + +

02 September 2016

+

Yosh updated:

+ +

Yoshax updated:

+ +

01 September 2016

Alberyk updated: