Vaurca Content 2 (#426)

Vaurca hivemind language added.
Vaurca appropriate name generator added.
Tied Vaurca language to their neural socket organ.
Added a method for non-Vaurca to intercept the Vaurca hivenet so long as they construct the correct item.
Sprites for Vaurca organs.
Neutered all Vaurca.
Cutting open a Vaurca for surgery now requires heavier equipment.
Injecting a Vaurca with a syringe now will take time.
Adds various Vaurca cosmetic items available via loadout.
Adds a few new burst-fire weapons exploiting the burstfire fix - obtainable via research or adminbus.
Ports the ability to stick heads on spears from Paradise-code.
Added an error message when trying to bite someone before the cooldown expires.
Removed spoken Vaurca language.
Heavily nerfed K'ois' properties.
Halved the nutrition value of nutriment, returning it to old-code state.
Nerfed the damage dealt by bite, while reducing the cooldown.
Fixed burstfire weapons spamming attack messages when fired, allowing for more automatic weapons.
Fixed Vaurca player ability to select coloured eyes.
This commit is contained in:
LordFowl
2016-06-24 14:55:44 +03:00
committed by skull132
parent 740c0efb0b
commit 56e288e910
59 changed files with 735 additions and 77 deletions
+15
View File
@@ -381,6 +381,20 @@
var/obj/machinery/machine
/obj/item/weapon/neuralbroke
name = "fried neural socket"
desc = "A Vaurca neural socket subjected to extreme heat. It's security chip appears to be fried."
icon = 'icons/obj/stock_parts.dmi'
icon_state = "neuralbroke"
/obj/item/weapon/neuralbroke/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/screwdriver))
new /obj/item/device/encryptionkey/hivenet(user.loc)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
user << "You bypass the fried security chip and extract the encryption key."
user << "The fried neural socket crumbles away like dust."
qdel(src)
///////////////////////////////////////Stock Parts /////////////////////////////////
/obj/item/weapon/storage/part_replacer
@@ -410,6 +424,7 @@
src.pixel_x = rand(-5.0, 5)
src.pixel_y = rand(-5.0, 5)
//Rank 1
/obj/item/weapon/stock_parts/console_screen
@@ -9,6 +9,7 @@
slot_flags = SLOT_EARS
var/translate_binary = 0
var/translate_hive = 0
var/translate_hivenet = 0
var/syndie = 0
var/list/channels = list()
@@ -28,6 +29,13 @@
translate_binary = 1
origin_tech = "syndicate=3"
/obj/item/device/encryptionkey/hivenet
name = "hivenet encryption chip"
desc = "It appears to be a Vaurca hivenet encryption chip, for localized broadcasts."
translate_hivenet = 1
icon = 'icons/obj/stock_parts.dmi'
icon_state = "neuralchip"
/obj/item/device/encryptionkey/headset_sec
name = "security radio encryption key"
icon_state = "sec_cypherkey"
@@ -11,6 +11,7 @@
slot_flags = SLOT_EARS
var/translate_binary = 0
var/translate_hive = 0
var/translate_hivenet = 0
var/obj/item/device/encryptionkey/keyslot1 = null
var/obj/item/device/encryptionkey/keyslot2 = null
maxf = 1489
@@ -48,6 +49,9 @@
if (translate_hive)
var/datum/language/hivemind = all_languages["Hivemind"]
hivemind.broadcast(M, message)
if (translate_hivenet)
var/datum/language/bug = all_languages["Hivenet"]
bug.broadcast(M, message)
return null
return ..()
@@ -61,6 +65,10 @@
return ..(freq, level)
return -1
/obj/item/device/radio/headset/hivenet
translate_hivenet = 1
ks1type = /obj/item/device/encryptionkey/hivenet
/obj/item/device/radio/headset/syndicate
origin_tech = "syndicate=3"
syndie = 1
@@ -279,6 +287,7 @@
src.channels = list()
src.translate_binary = 0
src.translate_hive = 0
src.translate_hivenet = 0
src.syndie = 0
if(keyslot1)
@@ -294,6 +303,9 @@
if(keyslot1.translate_hive)
src.translate_hive = 1
if(keyslot1.translate_hivenet)
src.translate_hivenet = 1
if(keyslot1.syndie)
src.syndie = 1
@@ -310,6 +322,9 @@
if(keyslot2.translate_hive)
src.translate_hive = 1
if(keyslot2.translate_hivenet)
src.translate_hivenet = 1
if(keyslot2.syndie)
src.syndie = 1
@@ -68,6 +68,9 @@
for (var/ch_name in channels)
secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
/obj/item/device/radio/attack_self(mob/user as mob)
user.set_machine(src)
interact(user)
/obj/item/device/radio/attack_self(mob/user as mob)
user.set_machine(src)
@@ -649,4 +652,4 @@
return
/obj/item/device/radio/off
listening = 0
listening = 0
@@ -232,3 +232,49 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
default_material = "glass"
//Putting heads on spears
/*bj/item/organ/external/head/attackby(var/obj/item/weapon/W, var/mob/living/user, params)
if(istype(W, /obj/item/weapon/material/twohanded/spear))
user << "<span class='notice'>You stick the head onto the spear and stand it upright on the ground.</span>"
var/obj/structure/headspear/HS = new /obj/structure/headspear(user.loc)
var/matrix/M = matrix()
src.transform = M
user.drop_item()
src.loc = HS
var/image/IM = image(src.icon,src.icon_state)
IM.overlays = src.overlays.Copy()
HS.overlays += IM
qdel(W)
qdel(src)
return
return ..()*/
/obj/item/weapon/material/twohanded/spear/attackby(var/obj/item/I, var/mob/living/user)
if(istype(I, /obj/item/organ/external/head))
user << "<span class='notice'>You stick the head onto the spear and stand it upright on the ground.</span>"
var/obj/structure/headspear/HS = new /obj/structure/headspear(user.loc)
var/matrix/M = matrix()
I.transform = M
usr.drop_item()
I.loc = HS
var/image/IM = image(I.icon,I.icon_state)
IM.overlays = I.overlays.Copy()
HS.overlays += IM
qdel(src)
return
return ..()
/obj/structure/headspear
name = "head on a spear"
desc = "How barbaric."
icon_state = "headspear"
density = 0
anchored = 1
/obj/structure/headspear/attack_hand(mob/living/user)
user.visible_message("<span class='warning'>[user] kicks over \the [src]!</span>", "<span class='danger'>You kick down \the [src]!</span>")
new /obj/item/weapon/material/twohanded/spear(user.loc)
for(var/obj/item/organ/external/head/H in src)
H.loc = user.loc
qdel(src)
@@ -56,6 +56,35 @@
"<span class='danger'>\The [user] is falling on the [src.name]! It looks like [tempgender] trying to commit suicide.</span>")
return (BRUTELOSS|FIRELOSS)
/obj/item/weapon/melee/energy/glaive
name = "energy glaive"
desc = "An energized glaive."
icon_state = "eglaive0"
active_force = 60
active_throwforce = 60
active_w_class = 5
force = 20
throwforce = 30
throw_speed = 5
throw_range = 10
w_class = 5
flags = CONDUCT | NOSHIELD | NOBLOODY
origin_tech = "magnets=3;combat=4;syndicate=4"
attack_verb = list("stabbed", "chopped", "sliced", "cleaved", "slashed", "cut")
sharp = 1
edge = 1
slot_flags = SLOT_BACK
/obj/item/weapon/melee/energy/glaive/activate(mob/living/user)
..()
icon_state = "eglaive1"
user << "\blue \The [src] is now energised."
/obj/item/weapon/melee/energy/glaive/deactivate(mob/living/user)
..()
icon_state = initial(icon_state)
user << "\blue \The [src] is de-energised."
/*
* Energy Axe
*/
@@ -76,7 +76,7 @@
return
*/
..()
//Please don't clutter the parent storage item with stupid hacks.
can_be_inserted(obj/item/W as obj, stop_messages = 0)
if(istype(W, /obj/item/weapon/storage/backpack/holding))
@@ -166,6 +166,12 @@
desc = "It's an orange backpack which was designed to hold beakers, pill bottles and bottles."
icon_state = "chempack"
/obj/item/weapon/storage/backpack/cloak
name = "tunnel cloak"
desc = "It's a Vaurca cloak, with paltry storage options."
icon_state = "cape"
max_storage_space = 12
/*
* Satchel Types
*/
+2
View File
@@ -1397,6 +1397,8 @@ datum/preferences
ShowChoices(user)
if("eyes")
if(species == "Vaurca")
return
var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference", rgb(r_eyes, g_eyes, b_eyes)) as color|null
if(new_eyes)
r_eyes = hex2num(copytext(new_eyes, 2, 4))
+18
View File
@@ -320,6 +320,12 @@ var/global/list/gear_datums = list()
slot = slot_glasses
allowed_roles = list("Security Officer","Head of Security","Warden","Detective","Internal Affairs Agent","Quartermaster","Head of Personnel","Captain")
/datum/gear/blindfold
display_name = "vaurca blindfold"
path = /obj/item/clothing/glasses/sunglasses/blinders
cost = 2
slot = slot_glasses
// Mask
/datum/gear/sterilemask
@@ -342,6 +348,12 @@ var/global/list/gear_datums = list()
slot = slot_w_uniform
cost = 1
/datum/gear/gearharness
display_name = "gear harness"
path = /obj/item/clothing/under/gearharness
slot = slot_w_uniform
cost = 2
/datum/gear/kilt
display_name = "kilt"
path = /obj/item/clothing/under/kilt
@@ -1241,6 +1253,12 @@ var/global/list/gear_datums = list()
sort_category = "misc"
cost = 1
/datum/gear/cape
display_name = " tunnel cloak"
path = /obj/item/weapon/storage/backpack/cloak
sort_category = "misc"
cost = 1
/datum/gear/zippo
display_name = "zippo"
path = /obj/item/weapon/flame/lighter/zippo
+6 -1
View File
@@ -207,7 +207,12 @@
desc = "Covers the eyes, preventing sight."
icon_state = "blindfold"
item_state = "blindfold"
//vision_flags = BLIND // This flag is only supposed to be used if it causes permanent blindness, not temporary because of glasses
/obj/item/clothing/glasses/sunglasses/blinders
name = "Vaurcae Blinders"
desc = "Specially designed Vaurca blindfold, designed to let in just enough light to see."
icon_state = "blinders"
item_state = "blinders"
/obj/item/clothing/glasses/sunglasses/prescription
name = "prescription sunglasses"
+9 -2
View File
@@ -5,6 +5,13 @@
worn_state = "red_pyjamas"
item_state = "w_suit"
/obj/item/clothing/under/gearharness
name = "gear harness"
desc = "Tight fitting gear harness."
icon_state = "harness"
worn_state = "harness"
item_state = "w_suit"
/obj/item/clothing/under/pj/blue
name = "blue pj's"
desc = "Sleepwear."
@@ -513,7 +520,7 @@
/obj/item/clothing/under/blazer
name = "blue blazer"
desc = "A bold but yet conservative outfit, red corduroys, navy blazer and a tie."
desc = "A bold but yet conservative outfit, red corduroys, navy blazer and a tie."
icon_state = "blue_blazer"
item_state = "blue_blazer"
worn_state = "blue_blazer"
worn_state = "blue_blazer"
+18 -1
View File
@@ -1021,4 +1021,21 @@ I said no!
/datum/recipe/cake/brain
items = list(/obj/item/organ/brain)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake
/datum/recipe/vaurca/friedkois
fruit = list("koisspore" = 1)
result = /obj/item/weapon/reagent_containers/food/snacks/friedkois
/datum/recipe/vaurca/koiswaffles
items = list(/obj/item/weapon/reagent_containers/food/snacks/koissoup)
result = /obj/item/weapon/reagent_containers/food/snacks/koiswaffles
/datum/recipe/vaurca/koisjelly
fruit = list("koisspore" = 2)
items = list(/obj/item/weapon/reagent_containers/food/snacks/koissoup)
result = /obj/item/weapon/reagent_containers/food/snacks/koisjelly
/datum/recipe/vaurca/neuralbroke
items = list(/obj/item/organ/vaurca/neuralsocket)
result = /obj/item/weapon/neuralbroke
+4 -1
View File
@@ -2,4 +2,7 @@
plantname = "ambrosia"
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus
plantname = "ambrosiadeus"
plantname = "ambrosiadeus"
/obj/item/weapon/reagent_containers/food/snacks/grown/kois
plantname = "koisspore"
+6 -6
View File
@@ -328,22 +328,22 @@
seed_noun = "spores"
display_name = "k'ois spores"
mutants = null
chems = list("koispaste" = list(25))
chems = list("koispaste" = list(5))
splat_type = /obj/effect/plant
kitchen_tag = "koisspore"
/datum/seed/koisspore/New()
..()
set_trait(TRAIT_SPREAD,1) //remove!
set_trait(TRAIT_MATURATION,5)
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,8)
set_trait(TRAIT_POTENCY,60)
set_trait(TRAIT_BIOLUM,1)
set_trait(TRAIT_CARNIVOROUS,1)
set_trait(TRAIT_BIOLUM_COLOUR,"#94b21c")
set_trait(TRAIT_PRODUCT_ICON,"mushroom11")
set_trait(TRAIT_PRODUCT_COLOUR,"#94b21c")
set_trait(TRAIT_PLANT_COLOUR,"#94b21c")
set_trait(TRAIT_BIOLUM_COLOUR,"#E6E600")
set_trait(TRAIT_PRODUCT_ICON,"alien3")
set_trait(TRAIT_PRODUCT_COLOUR,"#E6E600")
set_trait(TRAIT_PLANT_COLOUR,"#E6E600")
set_trait(TRAIT_PLANT_ICON,"mushroom6")
/datum/seed/mushroom/mold
+48 -6
View File
@@ -66,14 +66,56 @@
flags = WHITELISTED
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!")
/datum/language/vaurcese
name = "Vaurcese"
desc = "Vaurca native language made of clicks and sputters, \"It's a bugs life.\""
speech_verb = "clicks"
/datum/language/bug
name = "Hivenet"
desc = "Complex Vaurcesian language comprised of rapid mandible-clicking, \"It's a bugs life.\""
speech_verb = "broadcasts"
colour = "vaurca"
key = "9"
flags = WHITELISTED
syllables = list("kic","klic","\'tic","kit","lit","xic","vil","xrit","tshh","qix","qlit","zix","\'","!")
flags = WHITELISTED | HIVEMIND
syllables = list("vaur","uyek","uyit","avek","sc'theth","k'ztak","teth","wre'ge","lii","dra'","zo'","ra'","k'lax'","zz","vh","ik","ak",
"uhk","zir","sc'orth","sc'er","thc'yek","th'zirk","th'esk","k'ayek","ka'mil","sc'","ik'yir","yol","kig","k'zit","'","'","zrk","krg","isk'yet","na'k",
"sc'azz","th'sc","nil","n'ahk","sc'yeth","aur'sk","iy'it","azzg","a'","i'","o'","u'","a","i","o","u","zz","kr","ak","nrk")
/datum/language/bug/get_random_name()
var/new_name = "[pick(list("Ka'","Za'","Ka'"))]"
new_name += "[pick(list("Akaix'","Viax'"))]"
new_name += "[pick(list("Uyek","Uyit","Avek","Theth","Ztak","Teth","Zir","Yek","Zirk","Ayek","Yir","Kig","Yol","'Zrk","Nazgr","Yet","Nak","Kiihr","Gruz","Guurz","Nagr","Zkk","Zohd","Norc","Agraz","Yizgr","Yinzr","Nuurg","Iii","Lix","Nhagh","Xir","Z'zit","Zhul","Zgr","Na'k","Isk'yet","Aaaa"))]"
new_name += " [pick(list("Zo'ra","Zo'ra","Zo'ra","K'lax"))]"
return new_name
/datum/language/bug/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
log_say("[key_name(speaker)] : ([name]) [message]")
if(!speaker_mask)
speaker_mask = speaker.name
var/msg = "<i><span class='game say'>[name], <span class='name'>[speaker_mask]</span> [format_message(message, get_spoken_verb(message))]</span></i>"
for(var/mob/player in player_list)
if(istype(player,/mob/dead) || ((src in player.languages) || check_special_condition(player)))
player << msg
/datum/language/bug/check_special_condition(var/mob/other)
var/mob/living/carbon/human/M = other
if(!istype(M))
return 1
if(locate(/obj/item/organ/vaurca/neuralsocket) in M.internal_organs)
return 1
if (M.l_ear || M.r_ear)
var/obj/item/device/radio/headset/dongle
if(istype(M.l_ear,/obj/item/device/radio/headset))
dongle = M.l_ear
else
dongle = M.r_ear
if(!istype(dongle))
return 0
if(dongle.translate_hivenet)
return 1
return 0
/datum/language/human
name = "Sol Common"
@@ -264,6 +264,7 @@
set desc = "While grabbing someone aggressively, tear into them with your mandibles."
if(last_special > world.time)
src << "\red Your mandibles still ache!"
return
if(stat || paralysis || stunned || weakened || lying)
@@ -279,18 +280,18 @@
src << "\red You must have an aggressive grab to gut your prey!"
return
last_special = world.time + 50
last_special = world.time + 35
visible_message("<span class='warning'><b>\The [src]</b> rips viciously at \the [G.affecting]'s flesh with its mandibles!</span>")
if(istype(G.affecting,/mob/living/carbon/human))
var/mob/living/carbon/human/H = G.affecting
H.apply_damage(30,BRUTE)
H.apply_damage(25,BRUTE)
// if(H.stat == 2) //no gibbing humans but i'll let you gib like a mouse or something that's cool
// H.gib()
else
var/mob/living/M = G.affecting
if(!istype(M)) return //wut
M.apply_damage(30,BRUTE)
M.apply_damage(25,BRUTE)
// if(M.stat == 2)
// M.gib()
// M.gib()
+3 -2
View File
@@ -440,13 +440,12 @@
var/failed_inhale = 0
var/failed_exhale = 0
if(species.has_organ["breathing apparatus"])
if(species.has_organ["breathing apparatus"] && src.get_species() == "Vaurca")
var/obj/item/organ/vaurca/breathingapparatus/L = internal_organs_by_name["breathing apparatus"]
if(isnull(L))
poison_type = null
else if(L.is_broken())
poison_type = "oxygen" //if Vaurca breathing apparatus breaks, oxygen becomes poisonous.
if(species.breath_type)
breath_type = species.breath_type
else
@@ -1402,6 +1401,8 @@
var/obj/item/clothing/glasses/welding/O = glasses
if(!O.up)
found_welder = 1
if(istype(glasses, /obj/item/clothing/glasses/sunglasses/blinders))
found_welder = 1
if(!found_welder && istype(head, /obj/item/clothing/head/welding))
var/obj/item/clothing/head/welding/O = head
if(!O.up)
@@ -270,10 +270,9 @@
/datum/species/bug
name = "Vaurca"
name_plural = "Vaurcae"
language = "Hivenet"
icobase = 'icons/mob/human_races/r_vaurca.dmi'
deform = 'icons/mob/human_races/r_vaurca.dmi'
language = "Vaurcese"
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
rarity_value = 2
slowdown = 0 //may become a bonus if vaurca gain more legs.
@@ -300,21 +299,21 @@
heat_level_1 = 330 //Default 360
heat_level_2 = 380 //Default 400
heat_level_3 = 600 //Default 1000
flags = CAN_JOIN | NO_SLIP | NO_SCAN | HAS_SKIN_COLOR | IS_WHITELISTED
flags = CAN_JOIN | NO_SCAN | HAS_SKIN_COLOR | IS_WHITELISTED | NO_SLIP
blood_color = "#E6E600" // dark yellow
flesh_color = "#E6E600"
base_color = "#575757"
inherent_verbs = list(
/mob/living/carbon/human/proc/bugbite //weaker version of gut.
/mob/living/carbon/human/proc/bugbite, //weaker version of gut.
)
has_organ = list(
"neural socket" = /obj/item/organ/vaurca/neuralsocket,
"neural socket" = /obj/item/organ/vaurca/neuralsocket,
"breathing apparatus" = /obj/item/organ/vaurca/breathingapparatus,
"heart" = /obj/item/organ/heart,
"second heart" = /obj/item/organ/heart,
"heart" = /obj/item/organ/heart,
"second heart" = /obj/item/organ/heart,
"liver" = /obj/item/organ/liver,
"kidneys" = /obj/item/organ/kidneys,
"brain" = /obj/item/organ/brain,
@@ -323,4 +322,8 @@
/datum/species/bug/equip_survival_gear(var/mob/living/carbon/human/H)
..()
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
/datum/species/bug/handle_post_spawn(var/mob/living/carbon/human/H)
H.gender = NEUTER
return ..()
+1 -1
View File
@@ -144,7 +144,7 @@ var/list/ai_verbs_default = list(
add_language("Skrellian", 0)
add_language("Tradeband", 1)
add_language("Gutter", 0)
add_language("Vaurcese", 0)
add_language("Hivenet", 0)
add_language("Rootspeak", 0)
if(!safety)//Only used by AIize() to successfully spawn an AI.
@@ -477,7 +477,7 @@
user.remove_language("Sinta'unathi")
user.remove_language("Siik'tajr")
user.remove_language("Skrellian")
user.add_language("Vaurcese")
//user.add_language("Hivenet") //I can buy an AI core and its cyborgs having access to the local hivenet for security reasons, but a pAI?
user.add_language("Rootspeak")
is_active(mob/living/silicon/pai/user)
+2 -3
View File
@@ -380,8 +380,7 @@
cannot_break = 1
dislocated = -1
//VAURCA ORGANS
/*//VAURCA ORGANS
/obj/item/organ/vaurca/neuralsocket
name = "neural socket"
organ_tag = "neural socket"
@@ -406,4 +405,4 @@
icon = 'icons/mob/alien.dmi'
icon_state = "tracheae"
/obj/item/organ/vaurca/tracheae/removed()
return
return */
+45 -11
View File
@@ -167,17 +167,51 @@
..()
//VAURCA ORGANS
/obj/item/organ/vaurca/neuralsocket
name = "neural socket"
parent_organ = "head"
robotic = 2
/obj/item/organ/vaurca/breathingapparatus
name = "breathing apparatus"
parent_organ = "chest"
robotic = 2
/obj/item/organ/internal/vaurca/process()
return
/obj/item/organ/vaurca/neuralsocket
name = "neural socket"
organ_tag = "neural socket"
icon = 'icons/mob/alien.dmi'
icon_state = "neural_socket"
parent_organ = "head"
robotic = 2
obj/item/organ/vaurca/neuralsocket/process()
if (is_broken())
if (all_languages["Hivenet"] in owner.languages)
owner.remove_language(all_languages["Hivenet"])
owner << "\red Your mind suddenly grows dark as the unity of the Hive is torn from you."
else
if (!(all_languages["Hivenet"] in owner.languages))
owner.add_language(all_languages["Hivenet"])
owner << "\blue Your mind expands, and your thoughts join the unity of the Hivenet."
..()
/obj/item/organ/vaurca/neuralsocket/replaced(var/mob/living/carbon/human/target)
if (!(all_languages["Hivenet"] in owner.languages))
owner.add_language(all_languages["Hivenet"])
owner << "\blue Your mind expands, and your thoughts join the unity of the Hivenet."
..()
/obj/item/organ/vaurca/neuralsocket/removed(var/mob/living/carbon/human/target)
if(all_languages["Hivenet"] in target.languages)
target.remove_language(all_languages["Hivenet"])
target << "\red Your mind suddenly grows dark as the unity of the Hive is torn from you."
..()
/obj/item/organ/vaurca/breathingapparatus
name = "breathing apparatus"
organ_tag = "breathing apparatus"
parent_organ = "chest"
icon = 'icons/mob/alien.dmi'
icon_state = "breathing_app"
robotic = 2
obj/item/organ/vaurca/breathingapparatus/process()
return
/obj/item/organ/vaurca/breathingapparatus/removed()
return
@@ -168,6 +168,19 @@
/obj/item/ammo_magazine/a75/empty
initial_ammo = 0
/obj/item/ammo_magazine/trodpack
name = "tungsten rod pack"
icon_state = "trodpack"
mag_type = MAGAZINE
caliber = "trod"
ammo_type = /obj/item/ammo_casing/trod
multiple_sprites = 1
max_ammo = 2
/obj/item/ammo_magazine/trodpack/empty
initial_ammo = 0
/obj/item/ammo_magazine/a762
name = "magazine box (7.62mm)"
icon_state = "a762"
@@ -18,6 +18,12 @@
caliber = "38"
projectile_type = /obj/item/projectile/bullet/pistol
/obj/item/ammo_casing/trod
desc = "Hyperdense tungsten rod residue."
icon_state = "trod"
caliber = "trod"
projectile_type = /obj/item/projectile/bullet/trod
/obj/item/ammo_casing/c38r
desc = "A .38 rubber bullet casing."
caliber = "38"
@@ -69,7 +75,6 @@
caliber = "12mm"
projectile_type = /obj/item/projectile/bullet/pistol/medium
/obj/item/ammo_casing/shotgun
name = "shotgun slug"
desc = "A 12 gauge slug."
+22 -18
View File
@@ -199,7 +199,25 @@
if(!(target && target.loc))
target = targloc
pointblank = 0
var/obj/projectile = consume_next_projectile(user)
if(!projectile)
return
else
if(silenced)
return
else
if(reflex)
user.visible_message(
"<span class='reflex_shoot'><b>\The [user] fires \the [src][pointblank ? " point blank at \the [target]":""] by reflex!<b></span>",
"<span class='reflex_shoot'>You fire \the [src] by reflex!</span>",
"You hear a [fire_sound_text]!"
)
else
user.visible_message(
"<span class='danger'>\The [user] fires \the [src][pointblank ? " point blank at \the [target]":""]!</span>",
"<span class='warning'>You fire \the [src]!</span>",
"You hear a [fire_sound_text]!"
)
update_held_icon()
//update timing
@@ -236,26 +254,12 @@
playsound(user, fire_sound, 10, 1)
else
playsound(user, fire_sound, 50, 1)
if(reflex)
user.visible_message(
"<span class='reflex_shoot'><b>\The [user] fires \the [src][pointblank ? " point blank at \the [target]":""] by reflex!<b></span>",
"<span class='reflex_shoot'>You fire \the [src] by reflex!</span>",
"You hear a [fire_sound_text]!"
)
else
user.visible_message(
"<span class='danger'>\The [user] fires \the [src][pointblank ? " point blank at \the [target]":""]!</span>",
"<span class='warning'>You fire \the [src]!</span>",
"You hear a [fire_sound_text]!"
)
if(muzzle_flash)
set_light(muzzle_flash)
if(muzzle_flash)
set_light(muzzle_flash)
if(recoil)
spawn()
shake_camera(user, recoil+1, recoil)
shake_camera(user, recoil+1, recoil)
update_icon()
@@ -98,6 +98,85 @@
origin_tech = "combat=5;phorontech=4"
projectile_type = /obj/item/projectile/energy/phoron
/* Vaurca Weapons */
/obj/item/weapon/gun/energy/vaurca
name = "Alien Firearm"
desc = "Vaurcae weapons tend to be specialized and highly lethal. This one doesn't do much"
/obj/item/weapon/gun/energy/vaurca/bfg
name = "BFG 9000"
desc = "'Bio-Force Gun'. Yeah, right."
icon_state = "bfg"
item_state = "bfg"
charge_meter = 0
w_class = 3
fire_sound = 'sound/magic/LightningShock.ogg'
force = 30
projectile_type = /obj/item/projectile/energy/sonic
slot_flags = SLOT_BACK
max_shots = 40
firemodes = list(
list(name="EXTERMINATE", burst=20, burst_delay = 1, move_delay = 20, fire_delay = 40, dispersion = list(3.0, 3.25, 3.5, 3.75, 4.0, 4.25, 4.5, 4.75, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6.0, 6.25)),
)
/obj/item/weapon/gun/energy/vaurca/gatlinglaser
name = "Gatling Laser"
desc = "A highly sophisticated rapid fire laser weapon."
icon_state = "gatling"
item_state = "gatling"
fire_sound = 'sound/weapons/Laser.ogg'
origin_tech = "combat=5;materials=2"
charge_meter = 0
slot_flags = SLOT_BACK
w_class = 3
force = 10
projectile_type = /obj/item/projectile/beam/gatlinglaser
max_shots = 80
firemodes = list(
list(name="concentrated burst", burst=10, burst_delay = 1, fire_delay = 10, dispersion = list(0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9)),
list(name="spray", burst=20, burst_delay = 1, move_delay = 5, fire_delay = 30, dispersion = list(0.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.0, 3.25)),
)
/obj/item/weapon/gun/energy/vaurca/blaster
name = "Zo'ra Blaster"
desc = "An elegant weapon for a more civilized time."
icon_state = "blaster"
item_state = "blaster"
fire_sound = 'sound/weapons/Laser.ogg'
slot_flags = SLOT_BACK
w_class = 3
force = 10
projectile_type = /obj/item/projectile/energy/blaster
max_shots = 30
firemodes = list(
list(name="single shot", burst=1, burst_delay = 1, fire_delay = 0),
list(name="concentrated burst", burst=3, burst_delay = 1, fire_delay = 5),
)
/*/obj/item/weapon/gun/energy/vaurca/flamer
name = "Vaurcae Incinerator"
desc = "A devious flamethrower device that procedurally converts atmosphere to fuel for a virtually unlimited tank."
icon_state = "incinerator"
item_state = "incinerator"
fire_sound = 'sound/effects/extinguish.ogg'
charge_meter = 0
slot_flags = SLOT_BACK
w_class = 3
force = 10
projectile_type = /obj/item/projectile/energy/flamer
self_recharge = 1
recharge_time = 2
max_shots = 80
firemodes = list(
list(name="spray", burst = 20, burst_delay = -1, fire_delay = 10, dispersion = list(0.5, 0.5, 1.0, 1.0, 1.5, 1.5, 2.0, 2.0, 2.5, 2.5, 3.0, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.0, 6.0)),
)*/
/* Staves */
/obj/item/weapon/gun/energy/staff
@@ -282,3 +282,24 @@
/obj/item/weapon/gun/projectile/automatic/tommygun/update_icon()
..()
icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty"
/obj/item/weapon/gun/projectile/automatic/railgun
name = "Railgun"
desc = "An advanced rifle that magnetically propels hyperdense rods at breakneck speeds to devastating effect."
icon_state = "railgun"
item_state = "arifle"
w_class = 3
force = 10
caliber = "trod"
origin_tech = "combat=5;materials=2"
slot_flags = SLOT_BELT|SLOT_BACK
fire_sound = 'sound/effects/Explosion2.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/trodpack
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
firemodes = list(
list(name="single coil", burst=1, move_delay=6, accuracy = list(0)),
list(name="dual coil", burst=2, move_delay=8, accuracy = list(-2,-3), dispersion = list(2.0, 3.0)),
)
@@ -143,3 +143,13 @@
muzzle_type = /obj/effect/projectile/stun/muzzle
tracer_type = /obj/effect/projectile/stun/tracer
impact_type = /obj/effect/projectile/stun/impact
/obj/item/projectile/beam/gatlinglaser
name = "heavy laser"
icon_state = "heavylaser"
damage = 5
muzzle_type = /obj/effect/projectile/laser_omni/muzzle
tracer_type = /obj/effect/projectile/laser_omni/tracer
impact_type = /obj/effect/projectile/laser_omni/impact
+47 -1
View File
@@ -28,7 +28,7 @@
//snap pop
playsound(src, 'sound/effects/snap.ogg', 50, 1)
src.visible_message("<span class='warning'>\The [src] explodes in a bright flash!</span>")
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/sparks(T)
new /obj/effect/effect/smoke/illumination(T, brightness=max(flash_range*2, brightness), lifetime=light_duration)
@@ -99,3 +99,49 @@
damage = 20
damage_type = TOX
irradiate = 20
/obj/item/projectile/energy/sonic
name = "distortion"
icon = 'icons/obj/machines/particle_accelerator2.dmi'
icon_state = "particle"
check_armour = "bomb"
damage = 60
damage_type = BRUTE
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
kill_count = 100
embed = 0
incinerate = 40
weaken = 5
stun = 5
/obj/item/projectile/energy/sonic/on_hit(var/atom/target, var/blocked = 0)
var/mob/M = target
if(isturf(target))
target.ex_act(0)
if(ismob(target))
explosion(target, -1, 0, 2)
M.gib()
..()
/obj/item/projectile/energy/blaster
name = "blaster bolt"
icon_state = "laser"
check_armour = "laser"
damage = 10
damage_type = BURN
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
embed = 0
incinerate = 5
/*/obj/item/projectile/energy/flamer
name = "promethium"
icon_state = "fire"
check_armour = "energy"
kill_count = 25
damage = 10
damage_type = BURN
pass_flags = PASSTABLE
step_delay = 2
kill_count = 75
embed = 0
incinerate = 10*/
@@ -150,3 +150,15 @@
var/mob/living/carbon/human/M = target
M.adjustBrainLoss(20)
M.hallucination += 20
/obj/item/projectile/bullet/trod
name ="tungsten rod"
icon_state= "gauss"
damage = 75
check_armour = "bomb"
sharp = 1
edge = 1
on_hit(var/atom/target, var/blocked = 0)
explosion(target, 0, 0, 4)
return 1
@@ -4,7 +4,7 @@
id = "koispaste"
description = "A thick goopy substance, rich in K'ois nutrients."
metabolism = REM * 4
var/nutriment_factor = 40
var/nutriment_factor = 10
var/injectable = 0
color = "#dcd9cd"
@@ -24,7 +24,7 @@
description = "All the vitamins, minerals, and carbohydrates the body needs in pure form."
reagent_state = SOLID
metabolism = REM * 4
var/nutriment_factor = 30 // Per unit
var/nutriment_factor = 15 // Per unit
var/blood_factor = 6
var/regen_factor = 0.8
var/injectable = 0
@@ -254,7 +254,7 @@
New()
..()
reagents.add_reagent("kois", 20)
reagents.add_reagent("koispaste", 20)
bitesize = 5
/obj/item/weapon/reagent_containers/food/snacks/aesirsalad
@@ -3033,3 +3033,113 @@
..()
reagents.add_reagent("nutriment", 10)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/friedkois
name = "Fried K'ois"
desc = "K'ois, freshly bathed in the radiation of a microwave."
icon_state = "friedkois"
filling_color = "#E6E600"
New()
..()
reagents.add_reagent("koispaste", 6)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/friedkois/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/stack/rods))
new /obj/item/weapon/reagent_containers/food/snacks/koiskebab1(src)
user << "You skewer the fried k'ois."
qdel(src)
qdel(W)
if(istype(W,/obj/item/weapon/material/kitchen/rollingpin))
new /obj/item/weapon/reagent_containers/food/snacks/koissoup(src)
user << "You crush the fried K'ois into a paste, and pour it into a bowl."
qdel(src)
/obj/item/weapon/reagent_containers/food/snacks/koiskebab1
name = "K'ois on a Stick"
desc = "It's K'ois. On a stick. It looks like you could fit more."
icon_state = "koisbab1"
trash = /obj/item/stack/rods
filling_color = "#E6E600"
New()
..()
reagents.add_reagent("koispaste", 12)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/koiskebab1/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/friedkois))
new /obj/item/weapon/reagent_containers/food/snacks/koiskebab2(src)
user << "You add fried K'ois to the kebab."
qdel(src)
qdel(W)
/obj/item/weapon/reagent_containers/food/snacks/koiskebab2
name = "K'ois on a Stick"
desc = "It's K'ois. On a stick. It looks like you could fit more."
icon_state = "koisbab2"
trash = /obj/item/stack/rods
filling_color = "#E6E600"
New()
..()
reagents.add_reagent("koispaste", 18)
bitesize = 6
/obj/item/weapon/reagent_containers/food/snacks/koiskebab2/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/friedkois))
new /obj/item/weapon/reagent_containers/food/snacks/koiskebab3(src)
user << "You add fried K'ois to the kebab."
qdel(src)
qdel(W)
/obj/item/weapon/reagent_containers/food/snacks/koiskebab3
name = "K'ois on a Stick"
desc = "It's K'ois. On a stick. It doesn't look like you can fit anymore."
icon_state = "koisbab3"
trash = /obj/item/stack/rods
filling_color = "#E6E600"
New()
..()
reagents.add_reagent("koispaste", 24)
bitesize = 9
/obj/item/weapon/reagent_containers/food/snacks/koissoup
name = "K'ois Paste"
desc = "A thick K'ois goop, piled into a bowl."
icon_state = "koissoup"
trash = /obj/item/trash/snack_bowl
filling_color = "#4E6E600"
New()
..()
reagents.add_reagent("koispaste", 15)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/koiswaffles
name = "K'ois Waffles"
desc = "Rock-hard 'waffles' composed entirely of microwaved K'ois goop."
icon_state = "koiswaffles"
trash = /obj/item/trash/waffles
filling_color = "#E6E600"
New()
..()
reagents.add_reagent("koispaste", 25)
bitesize = 5
/obj/item/weapon/reagent_containers/food/snacks/koisjelly
name = "K'ois Jelly"
desc = "Enriched K'ois paste, filled to the brim with the good stuff."
icon_state = "koisjelly"
filling_color = "#E6E600"
New()
..()
reagents.add_reagent("koispaste", 25)
reagents.add_reagent("imidazoline", 20)
reagents.add_reagent("hyperzine", 5)
bitesize = 5
@@ -156,6 +156,8 @@
injtime = injtime * 2
else if(!H.can_inject(user, 1))
return
if(H.get_species() == "Vaurca")
injtime = injtime * 2
else if(isliving(target))
@@ -166,7 +168,11 @@
if(injtime == time)
user.visible_message("<span class='warning'>[user] is trying to inject [target] with [visible_name]!</span>")
else
user.visible_message("<span class='warning'>[user] begins hunting for an injection port on [target]'s suit!</span>")
var/mob/living/carbon/human/H = target
if(H.get_species() == "Vaurca")
user.visible_message("<span class='warning'>[user] begins hunting for an injection port on [target]'s carapace!</span>")
else
user.visible_message("<span class='warning'>[user] begins hunting for an injection port on [target]'s suit!</span>")
if(!do_mob(user, target, injtime))
return
+48 -3
View File
@@ -118,9 +118,13 @@
max_duration = 110
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
if(..())
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && affected.open == 0 && target_zone != "mouth"
if(target.get_species() == "Vaurca")
return 0
else
if(..())
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && affected.open == 0 && target_zone != "mouth"
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -146,6 +150,47 @@
"\red Your hand slips, slicing open [target]'s [affected.name] in the wrong place with \the [tool]!")
affected.createwound(CUT, 10)
/datum/surgery_step/generic/cut_openvaurca
allowed_tools = list(
/obj/item/weapon/surgicaldrill = 85, \
/obj/item/weapon/pickaxe/ = 15, \
)
min_duration = 110
max_duration = 130
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
if(target.get_species() != "Vaurca")
return 0
else
if(..())
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && affected.open == 0 && target_zone != "mouth"
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("[user] starts drilling into [target]'s [affected.name] carapace with \the [tool].", \
"You start drilling into [target]'s [affected.name] carapace with \the [tool].")
target.custom_pain("You feel a horrible pain as if from a jackhammer in your [affected.name]!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\blue [user] has drilled into [target]'s [affected.name] carapace with \the [tool].", \
"\blue You have drilled into [target]'s [affected.name] carapace with \the [tool].",)
affected.open = 1
if(istype(target) && !(target.species.flags & NO_BLOOD))
affected.status |= ORGAN_BLEEDING
affected.createwound(CUT, 1)
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, cracking [target]'s [affected.name] carapace in the wrong place with \the [tool]!", \
"\red Your hand slips, cracking [target]'s [affected.name] carapace in the wrong place with \the [tool]!")
affected.createwound(CUT, 15)
/datum/surgery_step/generic/clamp_bleeders
allowed_tools = list(
/obj/item/weapon/hemostat = 100, \
+1 -1
View File
@@ -983,7 +983,7 @@ var/list/be_special_flags = list(
#define LANGUAGE_SKRELLIAN "Skrellian"
#define LANGUAGE_ROOTSPEAK "Rootspeak"
#define LANGUAGE_TRADEBAND "Tradeband"
#define LANGUAGE_VAURCESE "Vaurcese"
#define LANGUAGE_VAURCESE "Hivenet"
#define LANGUAGE_GUTTER "Gutter"
#define WALL_CAN_OPEN 1
@@ -0,0 +1,53 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
# Your name.
author: LordFowl
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Vaurca hivemind language added."
- rscadd: "Vaurca appropriate name generator added."
- rscadd: "Tied Vaurca language to their neural socket organ."
- rscadd: "Added a method for non-Vaurca to intercept the Vaurca hivenet so long as they construct the correct item."
- rscadd: "Sprites for Vaurca organs."
- rscadd: "Neutered all Vaurca."
- rscadd: "Cutting open a Vaurca for surgery now requires heavier equipment."
- rscadd: "Injecting a Vaurca with a syringe now will take time."
- rscadd: "Adds various Vaurca cosmetic items available via loadout."
- rscadd: "Adds a few new burst-fire weapons exploiting the burstfire fix - obtainable via research or adminbus."
- rscadd: "Ports the ability to stick heads on spears from Paradise-code."
- rscadd: "Added an error message when trying to bite someone before the cooldown expires."
- rscdel: "Removed spoken Vaurca language."
- tweak: "Heavily nerfed K'ois' properties."
- tweak: "Halved the nutrition value of nutriment, returning it to old-code state."
- tweak: "Nerfed the damage dealt by bite, while reducing the cooldown."
- bugfix: "Fixed burstfire weapons spamming attack messages when fired, allowing for more automatic weapons."
- bugfix: "Fixed Vaurca player ability to select coloured eyes."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 32 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

After

Width:  |  Height:  |  Size: 286 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 KiB

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 94 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB