diff --git a/code/ATMOSPHERICS/components/unary/cold_sink.dm b/code/ATMOSPHERICS/components/unary/cold_sink.dm index 3bd62ffb72..c3b0000572 100644 --- a/code/ATMOSPHERICS/components/unary/cold_sink.dm +++ b/code/ATMOSPHERICS/components/unary/cold_sink.dm @@ -162,7 +162,7 @@ if(istype(P, /obj/item/weapon/stock_parts/matter_bin)) bin_rating += P.rating - power_rating = initial(power_rating) * cap_rating / 2 //more powerful + max_power_rating = initial(max_power_rating) * cap_rating / 2 //more powerful heatsink_temperature = initial(heatsink_temperature) / ((manip_rating + bin_rating) / 2) //more efficient air_contents.volume = max(initial(internal_volume) - 200, 0) + 200 * bin_rating set_power_level(power_setting) diff --git a/code/controllers/autotransfer.dm b/code/controllers/autotransfer.dm index afd1435ffa..bdb5c6d39c 100644 --- a/code/controllers/autotransfer.dm +++ b/code/controllers/autotransfer.dm @@ -3,8 +3,12 @@ var/datum/controller/transfer_controller/transfer_controller datum/controller/transfer_controller var/timerbuffer = 0 //buffer for time check var/currenttick = 0 + var/shift_hard_end = 0 //VOREStation Edit + var/shift_last_vote = 0 //VOREStation Edit datum/controller/transfer_controller/New() timerbuffer = config.vote_autotransfer_initial + shift_hard_end = config.vote_autotransfer_initial + (config.vote_autotransfer_interval * 1) //VOREStation Edit //Change this "1" to how many extend votes you want there to be. + shift_last_vote = shift_hard_end - config.vote_autotransfer_interval //VOREStation Edit processing_objects += src datum/controller/transfer_controller/Destroy() @@ -12,6 +16,13 @@ datum/controller/transfer_controller/Destroy() datum/controller/transfer_controller/proc/process() currenttick = currenttick + 1 - if (round_duration_in_ticks >= timerbuffer - 1 MINUTE) + if (round_duration_in_ticks >= shift_last_vote - 2 MINUTES) //VOREStation Edit START + shift_last_vote = 999999999999 //Setting to a stupidly high number since it'll be not used again. + world << "Warning: This upcoming extend vote will be your LAST extend vote. Wrap up your scenes in the next 60 minutes if the vote succeeds." //VOREStation Edit + if (round_duration_in_ticks >= shift_hard_end - 1 MINUTE) + init_shift_change(null, 1) + shift_hard_end = timerbuffer + config.vote_autotransfer_interval //If shuttle somehow gets recalled, let's force it to call again next time a vote would occur. + timerbuffer = timerbuffer + config.vote_autotransfer_interval //Just to make sure a vote doesn't occur immediately afterwords. + else if (round_duration_in_ticks >= timerbuffer - 1 MINUTE) //VOREStation Edit END vote.autotransfer() timerbuffer = timerbuffer + config.vote_autotransfer_interval diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index d881a65a4a..5183304609 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -9,7 +9,7 @@ var/global/datum/shuttle_controller/shuttle_controller /datum/shuttle_controller/proc/process() //process ferry shuttles for (var/datum/shuttle/ferry/shuttle in process_shuttles) - if (shuttle.process_state) + if (shuttle.process_state || shuttle.always_process) shuttle.process() diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm index 6938b06f48..03fd38532c 100644 --- a/code/datums/autolathe/arms.dm +++ b/code/datums/autolathe/arms.dm @@ -258,7 +258,7 @@ /datum/category_item/autolathe/arms/rifle_SVD name = "10rnd rifle magazine (7.62mm)" - path =/obj/item/ammo_magazine/SVD/empty + path =/obj/item/ammo_magazine/m762svd/empty category = "Arms and Ammunition" hidden = 1 diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm index 752c127da2..f74320cfe2 100644 --- a/code/datums/supplypacks/engineering.dm +++ b/code/datums/supplypacks/engineering.dm @@ -152,7 +152,7 @@ /datum/supply_packs/eng/teg contains = list(/obj/machinery/power/generator) name = "Mark I Thermoelectric Generator" - cost = 50 + cost = 40 containertype = /obj/structure/closet/crate/secure/large containername = "Mk1 TEG crate" access = access_engine @@ -160,7 +160,7 @@ /datum/supply_packs/eng/circulator contains = list(/obj/machinery/atmospherics/binary/circulator) name = "Binary atmospheric circulator" - cost = 50 + cost = 20 containertype = /obj/structure/closet/crate/secure/large containername = "Atmospheric circulator crate" access = access_engine diff --git a/code/datums/supplypacks/hydroponics_vr.dm b/code/datums/supplypacks/hydroponics_vr.dm index 08b721dba9..25daad249c 100644 --- a/code/datums/supplypacks/hydroponics_vr.dm +++ b/code/datums/supplypacks/hydroponics_vr.dm @@ -3,4 +3,32 @@ cost = 200 //You're getting 22 birds. Of course it's going to be a lot! containertype = /obj/structure/largecrate/birds containername = "Bird crate" - access = access_hydroponics \ No newline at end of file + access = access_hydroponics + +/datum/supply_packs/hydro/sobaka + name = "Sobaka crate" + contains = list (/obj/item/weapon/storage/box/monkeycubes/sobakacubes) + cost = 20 + containertype = /obj/structure/closet/crate/freezer + containername = "Sobaka crate" + +/datum/supply_packs/hydro/saru + name = "Saru crate" + contains = list (/obj/item/weapon/storage/box/monkeycubes/sarucubes) + cost = 20 + containertype = /obj/structure/closet/crate/freezer + containername = "Saru crate" + +/datum/supply_packs/hydro/sparra + name = "Sparra crate" + contains = list (/obj/item/weapon/storage/box/monkeycubes/sparracubes) + cost = 20 + containertype = /obj/structure/closet/crate/freezer + containername = "Sparra crate" + +/datum/supply_packs/hydro/wolpin + name = "Wolpin crate" + contains = list (/obj/item/weapon/storage/box/monkeycubes/wolpincubes) + cost = 20 + containertype = /obj/structure/closet/crate/freezer + containername = "Wolpin crate" diff --git a/code/datums/supplypacks/munitions.dm b/code/datums/supplypacks/munitions.dm index cdbbb61945..d42a59c11a 100644 --- a/code/datums/supplypacks/munitions.dm +++ b/code/datums/supplypacks/munitions.dm @@ -192,7 +192,6 @@ num_contained = 2 contains = list( /obj/item/weapon/gun/projectile/automatic/tommygun, - /obj/item/weapon/gun/projectile/automatic/carbine, /obj/item/weapon/gun/projectile/automatic/c20r, /obj/item/weapon/gun/projectile/automatic/sts35 ) diff --git a/code/datums/supplypacks/robotics.dm b/code/datums/supplypacks/robotics.dm index 5510bae9ce..9e3234cca6 100644 --- a/code/datums/supplypacks/robotics.dm +++ b/code/datums/supplypacks/robotics.dm @@ -68,6 +68,14 @@ containername = "Robolimb blueprints (Xion)" access = access_robotics +/datum/supply_packs/robotics/robolimbs/grayson + name = "Grayson robolimb blueprints" + contains = list(/obj/item/weapon/disk/limb/grayson) + cost = 30 + containertype = /obj/structure/closet/crate/secure/science + containername = "Robolimb blueprints (Grayson)" + access = access_robotics + /datum/supply_packs/robotics/robolimbs/hephaestus name = "Hephaestus robolimb blueprints" contains = list(/obj/item/weapon/disk/limb/hephaestus) diff --git a/code/datums/supplypacks/science_vr.dm b/code/datums/supplypacks/science_vr.dm index e5a1adc890..b05d4ef068 100644 --- a/code/datums/supplypacks/science_vr.dm +++ b/code/datums/supplypacks/science_vr.dm @@ -59,9 +59,11 @@ access = access_xenobiology contraband = 1 +/* Removed until Otie code is unfucked. /datum/supply_packs/sci/otie name = "V.A.R.M.A.corp adoptable reject (Dangerous!)" cost = 100 containertype = /obj/structure/largecrate/animal/otie containername = "V.A.R.M.A.corp adoptable reject (Dangerous!)" - access = access_xenobiology \ No newline at end of file + access = access_xenobiology +*/ \ No newline at end of file diff --git a/code/datums/supplypacks/security_vr.dm b/code/datums/supplypacks/security_vr.dm index e0ebe3440a..5e969b942b 100644 --- a/code/datums/supplypacks/security_vr.dm +++ b/code/datums/supplypacks/security_vr.dm @@ -1,8 +1,10 @@ +/* Removed until Otie code is unfucked. /datum/supply_packs/security/guardbeast name = "V.A.R.M.A.corp autoNOMous security solution" - cost = 199 + cost = 150 containertype = /obj/structure/largecrate/animal/guardbeast containername = "V.A.R.M.A.corp autoNOMous security solution crate" access = list( access_security, access_xenobiology) +*/ \ No newline at end of file diff --git a/code/datums/underwear/undershirts.dm b/code/datums/underwear/undershirts.dm index 59f33be094..1bbbae7fb5 100644 --- a/code/datums/underwear/undershirts.dm +++ b/code/datums/underwear/undershirts.dm @@ -161,4 +161,8 @@ /datum/category_item/underwear/undershirt/longstripe_blue name = "Longsleeve Striped Shirt, Blue" - icon_state = "longstripe_blue" \ No newline at end of file + icon_state = "longstripe_blue" + +/datum/category_item/underwear/undershirt/tiedye + name = "Tiedye Shirt" + icon_state = "tiedye" \ No newline at end of file diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 5bdacf5dd0..ff9e9df323 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -113,5 +113,5 @@ datum/announcement/proc/Log(message as text, message_title as text) rank = character.mind.role_alt_title AnnounceArrivalSimple(character.real_name, rank, join_message) -/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "has arrived on the station") - global_announcer.autosay("[name], [rank], [join_message].", ANNOUNCER_NAME) +/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "will arrive to the station shortly by shuttle") + global_announcer.autosay("[name], [rank], [join_message].", "Arrivals Announcement Computer") diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm index 7ac0a4729b..596ac1451e 100644 --- a/code/game/antagonist/outsider/raider.dm +++ b/code/game/antagonist/outsider/raider.dm @@ -80,7 +80,7 @@ var/datum/antagonist/raider/raiders /obj/item/weapon/gun/projectile/automatic/c20r, /obj/item/weapon/gun/projectile/automatic/wt550, /obj/item/weapon/gun/projectile/automatic/sts35, - /obj/item/weapon/gun/projectile/automatic/carbine, + /obj/item/weapon/gun/projectile/automatic/bullpup, /obj/item/weapon/gun/projectile/automatic/tommygun, /obj/item/weapon/gun/projectile/silenced, /obj/item/weapon/gun/projectile/shotgun/pump, diff --git a/code/game/antagonist/station/renegade.dm b/code/game/antagonist/station/renegade.dm index d9e3671546..d9796432c0 100644 --- a/code/game/antagonist/station/renegade.dm +++ b/code/game/antagonist/station/renegade.dm @@ -37,7 +37,7 @@ var/datum/antagonist/renegade/renegades /obj/item/weapon/gun/projectile/automatic/mini_uzi, /obj/item/weapon/gun/projectile/automatic/c20r, /obj/item/weapon/gun/projectile/automatic/sts35, - /obj/item/weapon/gun/projectile/automatic/carbine, + /obj/item/weapon/gun/projectile/automatic/bullpup, /obj/item/weapon/gun/projectile/automatic/wt550, /obj/item/weapon/gun/projectile/automatic/z8, /obj/item/weapon/gun/projectile/automatic/tommygun, diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 9676f66039..1f18dca53f 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -471,13 +471,18 @@ var/global/datum/controller/occupations/job_master if(istype(H)) //give humans wheelchairs, if they need them. var/obj/item/organ/external/l_foot = H.get_organ("l_foot") var/obj/item/organ/external/r_foot = H.get_organ("r_foot") - if(!l_foot || !r_foot) + var/obj/item/weapon/storage/S = locate() in H.contents + var/obj/item/wheelchair/R = locate() in S.contents + if(!l_foot || !r_foot || R) var/obj/structure/bed/chair/wheelchair/W = new /obj/structure/bed/chair/wheelchair(H.loc) H.buckled = W H.update_canmove() W.set_dir(H.dir) W.buckled_mob = H W.add_fingerprint(H) + if(R) + W.color = R.color + qdel(R) H << "You are [job.total_positions == 1 ? "the" : "a"] [alt_title ? alt_title : rank]." @@ -628,12 +633,12 @@ var/global/datum/controller/occupations/job_master if(spawnpos && istype(spawnpos) && spawnpos.turfs.len) // VOREStation Edit - Fix runtime if no landmarks exist for a spawntype if(spawnpos.check_job_spawning(rank)) - H.forceMove(pick(spawnpos.turfs)) + H.forceMove(spawnpos.get_spawn_position()) . = spawnpos.msg else H << "Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead." H.forceMove(pick(latejoin)) - . = "has arrived on the station" + . = "will arrive to the station shortly by shuttle" else H.forceMove(pick(latejoin)) . = "has arrived on the station" diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 07f0b8f9bd..b467a3a375 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -115,6 +115,13 @@ dat += "Utility belt ([round(300/build_eff)])
" dat += "Leather Satchel ([round(400/build_eff)])
" dat += "Cash Bag ([round(400/build_eff)])
" + dat += "Workboots ([round(400/build_eff)])
" + dat += "Leather Shoes ([round(400/build_eff)])
" + + dat += "Leather Chaps ([round(400/build_eff)])
" + dat += "Leather Coat ([round(500/build_eff)])
" + dat += "Leather Jacket ([round(500/build_eff)])
" + dat += "Winter Coat ([round(500/build_eff)])
" //dat += "Other
" //dat += "Monkey (500)
" else @@ -214,6 +221,18 @@ new/obj/item/weapon/storage/bag/cash(loc) if("monkey") new/mob/living/carbon/human/monkey(loc) + if("workboots") + new/obj/item/clothing/shoes/boots/workboots(loc) + if("leathershoes") + new/obj/item/clothing/shoes/leather(loc) + if("leatherchaps") + new/obj/item/clothing/under/pants/chaps + if("leathercoat") + new/obj/item/clothing/suit/leathercoat(loc) + if("leatherjacket") + new/obj/item/clothing/suit/storage/toggle/brown_jacket(loc) + if("wintercoat") + new/obj/item/clothing/suit/storage/hooded/wintercoat(loc) processing = 0 menustat = "complete" update_icon() diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 3282430c82..dc67821301 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -59,7 +59,7 @@ if(!istype(id_card)) return ..() - if(!scan && (access_change_ids in id_card.access) && user.unEquip(id_card)) + if(!scan && (access_change_ids in id_card.access) && (user.unEquip(id_card) || (id_card.loc == user && istype(user,/mob/living/silicon/robot)))) //Grippers. Again. ~Mechoid user.drop_item() id_card.forceMove(src) scan = id_card diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 0057752aa9..6946d6607f 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -99,5 +99,14 @@ if(computer_deconstruction_screwdriver(user, I)) return else + if(istype(I,/obj/item/weapon/gripper)) //Behold, Grippers and their horribleness. If ..() is called by any computers' attackby() now or in the future, this should let grippers work with them appropriately. + var/obj/item/weapon/gripper/B = I //B, for Borg. + if(!B.wrapped) + user << "\The [B] is not holding anything." + return + else + var/B_held = B.wrapped + user << "You use \the [B] to use \the [B_held] with \the [src]." + return attack_hand(user) return \ No newline at end of file diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index aa09463c15..3d5f3c28f3 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -436,6 +436,10 @@ else W.forceMove(src.loc) + for(var/obj/structure/B in items) + if(istype(B,/obj/structure/bed)) + qdel(B) + //Update any existing objectives involving this mob. for(var/datum/objective/O in all_objectives) // We don't want revs to get objectives that aren't for heads of staff. Letting @@ -537,6 +541,9 @@ for(var/obj/item/W in items) W.forceMove(get_turf(src)) + for(var/obj/structure/bed/S in src.contents) + S.forceMove(get_turf(src)) + go_out() add_fingerprint(usr) @@ -579,6 +586,8 @@ if(ishuman(usr) && applies_stasis) var/mob/living/carbon/human/H = occupant H.Stasis(1000) + if(usr.buckled && istype(usr.buckled, /obj/structure/bed/chair/wheelchair)) + usr.buckled.loc = usr.loc icon_state = occupied_icon_state @@ -676,6 +685,8 @@ if(ishuman(M) && applies_stasis) var/mob/living/carbon/human/H = M H.Stasis(1000) + if(M.buckled && istype(M.buckled, /obj/structure/bed/chair/wheelchair)) + M.buckled.loc = M.loc // Book keeping! var/turf/location = get_turf(src) @@ -683,4 +694,4 @@ message_admins("[key_name_admin(M)] has entered a stasis pod.") //Despawning occurs when process() is called with an occupant without a client. - add_fingerprint(M) \ No newline at end of file + add_fingerprint(M) diff --git a/code/game/machinery/kitchen/cooking_machines/_cooker.dm b/code/game/machinery/kitchen/cooking_machines/_cooker.dm index 552e05d95a..26b21c9a13 100644 --- a/code/game/machinery/kitchen/cooking_machines/_cooker.dm +++ b/code/game/machinery/kitchen/cooking_machines/_cooker.dm @@ -76,10 +76,21 @@ else if(istype(check, /obj/item/weapon/disk/nuclear)) user << "Central Command would kill you if you [cook_type] that." return 0 - else if(!istype(check) && !istype(check, /obj/item/weapon/holder) && !istype(check, /obj/item/organ)) - user << "That's not edible." - return 0 - + else if(!istype(check) && !istype(check, /obj/item/weapon/holder) && !istype(check, /obj/item/organ)) //Gripper check has to go here, else it still just cuts it off. ~Mechoid + // Is it a borg using a gripper? + if(istype(check, /obj/item/weapon/gripper)) // Grippers. ~Mechoid. + var/obj/item/weapon/gripper/B = check //B, for Borg. + if(!B.wrapped) + user << "\The [B] is not holding anything." + return 0 + else + var/B_held = B.wrapped + user << "You use \the [B] to put \the [B_held] into \the [src]." + return 0 + else + user << "That's not edible." + return 0 + if(istype(I, /obj/item/organ)) var/obj/item/organ/O = I if(O.robotic) @@ -91,8 +102,8 @@ for(var/mob/living/M in cooking_obj.contents) M.apply_damage(rand(30,40), BURN, "chest") - // Not sure why a food item that passed the previous checks would fail to drop, but safety first. - if(!user.unEquip(I)) + // Not sure why a food item that passed the previous checks would fail to drop, but safety first. (Hint: Borg grippers. That is why. ~Mechoid.) + if(!user.unEquip(I) && !istype(user,/mob/living/silicon/robot)) return // We can actually start cooking now. @@ -134,7 +145,7 @@ // Copy reagents over. trans_to_obj must be used, as trans_to fails for snacks due to is_open_container() failing. if(cooking_obj.reagents && cooking_obj.reagents.total_volume) cooking_obj.reagents.trans_to_obj(result, cooking_obj.reagents.total_volume) - + // Set cooked data. var/obj/item/weapon/reagent_containers/food/snacks/food_item = cooking_obj if(istype(food_item) && islist(food_item.cooked)) @@ -183,7 +194,7 @@ /obj/machinery/cooker/attack_hand(var/mob/user) - if(cooking_obj) + if(cooking_obj && user.Adjacent(src)) //Fixes borgs being able to teleport food in these machines to themselves. user << "You grab \the [cooking_obj] from \the [src]." user.put_in_hands(cooking_obj) cooking = 0 diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index 5b78f81249..7ff33c9452 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -252,6 +252,16 @@ if(P.contents.len > 0) user << "Some items are refused." + else if(istype(O, /obj/item/weapon/gripper)) // Grippers. ~Mechoid. + var/obj/item/weapon/gripper/B = O //B, for Borg. + if(!B.wrapped) + user << "\The [B] is not holding anything." + return + else + var/B_held = B.wrapped + user << "You use \the [B] to put \the [B_held] into \the [src]." + return + else user << "\The [src] smartly refuses [O]." return 1 diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index e80b7d8f10..788e65827b 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -21,9 +21,9 @@ newplayer_start += loc delete_me = 1 return - if("JoinLate") - latejoin += loc - delete_me = 1 + if("JoinLate") // Bit difference, since we need the spawn point to move. + latejoin += src + // delete_me = 1 return if("JoinLateGateway") latejoin_gateway += loc diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 996f848849..4c08079585 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -109,6 +109,7 @@ user << "You flick the switch on [src], but nothing happens." return 0 on = !on + playsound(src.loc, 'sound/weapons/empty.ogg', 15, 1, -3) update_icon() user.update_action_buttons() return 1 diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 9292e1ce93..4c32fda5f2 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -78,7 +78,12 @@ uses -= used_uses A.add_fingerprint(user) - log_and_message_admins("emagged \an [A].") + //Vorestation Edit: Because some things (read lift doors) don't get emagged + if(used_uses) + log_and_message_admins("emagged \an [A].") + else + log_and_message_admins("attempted to emag \an [A].") + // Vorestation Edit: End of Edit if(uses<1) user.visible_message("\The [src] fizzles and sparks - it seems it's been used once too often, and is now spent.") diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 4f7ba66842..1bf4924507 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -583,6 +583,21 @@ CIGARETTE PACKETS ARE IN FANCY.DM desc = "Made of gold and obsidian, this is truly not worth however much you spent on it." icon_state = "cappiezippo" +/obj/item/weapon/flame/lighter/zippo/communist + name = "\improper communist Zippo lighter" + desc = "All you need to spark a revolution." + icon_state = "commiezippo" + +/obj/item/weapon/flame/lighter/zippo/royal + name = "\improper royal Zippo lighter" + desc = "An incredibly fancy lighter, gilded and covered in the color of royalty." + icon_state = "royalzippo" + +/obj/item/weapon/flame/lighter/zippo/gonzo + name = "\improper Gonzo Zippo lighter" + desc = "A lighter with the iconic Gonzo fist painted on it." + icon_state = "gonzozippo" + /obj/item/weapon/flame/lighter/zippo/rainbow name = "\improper rainbow Zippo lighter" icon_state = "rainbowzippo" \ No newline at end of file diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm index 9b4cb3ca9b..cb6a982231 100644 --- a/code/game/objects/items/weapons/policetape.dm +++ b/code/game/objects/items/weapons/policetape.dm @@ -30,6 +30,7 @@ var/list/tape_roll_applications = list() name = "tape" icon = 'icons/policetape.dmi' anchored = 1 + layer = 3.2 var/lifted = 0 var/crumpled = 0 var/tape_dir = 0 @@ -56,6 +57,7 @@ var/list/tape_roll_applications = list() hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E") hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S") hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W") + update_icon() /obj/item/taperoll/police name = "police tape" diff --git a/code/game/objects/random/random_vr.dm b/code/game/objects/random/random_vr.dm index 3fecb12d81..709202d40c 100644 --- a/code/game/objects/random/random_vr.dm +++ b/code/game/objects/random/random_vr.dm @@ -65,7 +65,7 @@ prob(6);/obj/item/weapon/gun/projectile/automatic/l6_saw,\ prob(6);/obj/item/weapon/gun/energy/lasercannon,\ prob(5);/obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever,\ - prob(5);/obj/item/weapon/gun/projectile/automatic/carbine,\ + prob(5);/obj/item/weapon/gun/projectile/automatic/bullpup,\ prob(5);/obj/item/weapon/gun/energy/pulse_rifle,\ /* prob(4);/obj/item/weapon/gun/projectile/automatic/battlerifle,\ */ prob(3);/obj/item/weapon/gun/projectile/deagle/camo,\ @@ -183,7 +183,7 @@ /obj/random/outside_mob/item_to_spawn() // Special version for mobs to have the same faction. var/mob = pick( prob(50);/mob/living/simple_animal/retaliate/gaslamp, - prob(50);/mob/living/simple_animal/otie/feral, +// prob(50);/mob/living/simple_animal/otie/feral, // Removed until Otie code is unfucked. prob(20);/mob/living/simple_animal/hostile/dino/virgo3b, prob(1);/mob/living/simple_animal/hostile/dragon/virgo3b) if (istype(mob, /mob/living)) // This is just to prevent runtime errors in case some dev is a dumbass and puts invalid items into this. diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index bdce42f9f0..b5395456ed 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -56,6 +56,7 @@ return if(src.allowed(user)) src.locked = !src.locked + playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) for(var/mob/O in viewers(user, 3)) if((O.client && !( O.blinded ))) O << "The locker has been [locked ? null : "un"]locked by [user]." diff --git a/code/game/objects/structures/crates_lockers/largecrate_vr.dm b/code/game/objects/structures/crates_lockers/largecrate_vr.dm index c22698ce45..964022061a 100644 --- a/code/game/objects/structures/crates_lockers/largecrate_vr.dm +++ b/code/game/objects/structures/crates_lockers/largecrate_vr.dm @@ -53,7 +53,6 @@ /mob/living/simple_animal/hostile/bear;0.5, /mob/living/simple_animal/hostile/bear/brown;0.5, /mob/living/simple_animal/hostile/carp, - /mob/living/simple_animal/otie/friendly, /mob/living/simple_animal/hostile/mimic) ..() @@ -73,6 +72,7 @@ /mob/living/simple_animal/hostile/alien/queen) ..() +/* // Removed until Otie code is unfucked. /obj/structure/largecrate/animal/guardbeast name = "V.A.R.M.A.corp autoNOMous security solution" desc = "The V.A.R.M.A.corp bioengineering division flagship product on trained optimal snowflake guard dogs." @@ -93,4 +93,5 @@ playsound(src, 'sound/items/poster_ripped.ogg', 50, 1) icon_state = "otiecrate" taped = 0 - ..() \ No newline at end of file + ..() +*/ \ No newline at end of file diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 9ae19769eb..bdd4b87b0e 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -193,3 +193,31 @@ pulling = null usr.pulledby = null ..() + +/obj/item/wheelchair + name = "wheelchair" + desc = "A folded wheelchair that can be carried around." + icon = 'icons/obj/furniture.dmi' + icon_state = "wheelchair_folded" + item_state = "wheelchair" + w_class = ITEMSIZE_HUGE // Can't be put in backpacks. Oh well. + +/obj/item/wheelchair/attack_self(mob/user) + var/obj/structure/bed/chair/wheelchair/R = new /obj/structure/bed/chair/wheelchair(user.loc) + R.add_fingerprint(user) + R.name = src.name + R.color = src.color + qdel(src) + +/obj/structure/bed/chair/wheelchair/MouseDrop(over_object, src_location, over_location) + ..() + if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) + if(!ishuman(usr)) return + if(buckled_mob) return 0 + visible_message("[usr] collapses \the [src.name].") + var/obj/item/wheelchair/R = new/obj/item/wheelchair(get_turf(src)) + R.name = src.name + R.color = src.color + spawn(0) + qdel(src) + return diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index ee84303d83..348a7270f3 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -291,6 +291,8 @@ /obj/structure/window/proc/hit(var/damage, var/sound_effect = 1) if(reinf) damage *= 0.5 + if(damage < 5) + return take_damage(damage) return diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index 5426eb43e6..236f94de82 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -20,7 +20,10 @@ return result +//------------------------ + /turf/space/transit/north // moving to the north + icon_state = "arrow-north" pushdirection = SOUTH // south because the space tile is scrolling south var/static/list/phase_shift_by_x @@ -33,8 +36,28 @@ var/transit_state = (world.maxy - src.y + x_shift)%15 + 1 icon_state = "speedspace_ns_[transit_state]" +//------------------------ + +/turf/space/transit/south // moving to the south + icon_state = "arrow-south" + pushdirection = SOUTH // south because the space tile is scrolling south + var/static/list/phase_shift_by_x + +/turf/space/transit/south/New() + ..() + if(!phase_shift_by_x) + phase_shift_by_x = get_cross_shift_list(15) + + var/x_shift = phase_shift_by_x[src.x % (phase_shift_by_x.len - 1) + 1] + var/transit_state = (world.maxy - src.y + x_shift)%15 + 1 + + var/icon/I = new(icon, "speedspace_ns_[transit_state]") + I.Flip(SOUTH) + icon = I +//------------------------ /turf/space/transit/east // moving to the east + icon_state = "arrow-east" pushdirection = WEST var/static/list/phase_shift_by_y @@ -47,3 +70,23 @@ var/transit_state = (world.maxx - src.x + y_shift)%15 + 1 icon_state = "speedspace_ew_[transit_state]" +//------------------------ + +/turf/space/transit/west // moving to the west + icon_state = "arrow-west" + pushdirection = WEST + var/static/list/phase_shift_by_y + +/turf/space/transit/west/New() + ..() + if(!phase_shift_by_y) + phase_shift_by_y = get_cross_shift_list(15) + + var/y_shift = phase_shift_by_y[src.y % (phase_shift_by_y.len - 1) + 1] + var/transit_state = (world.maxx - src.x + y_shift)%15 + 1 + + var/icon/I = new(icon, "speedspace_ew_[transit_state]") + I.Flip(WEST) + icon = I + +//------------------------ \ No newline at end of file diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 5e835a7501..cb16b16a42 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -91,8 +91,8 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," //Options bar: mob, details ( admin = 2, dev = 3, mentor = 4, character name (0 = just ckey, 1 = ckey and character name), link? (0 no don't make it a link, 1 do so), // highlight special roles (0 = everyone has same looking name, 1 = antags / special roles get a golden name) - var/mentor_msg = "Request for Help: [get_options_bar(mob, 4, 1, 1, 0)][ai_cl]: [msg]" - msg = "Request for Help:: [get_options_bar(mob, 2, 1, 1)][ai_cl]: [msg]" + var/mentor_msg = "Request for Help: [get_options_bar(mob, 4, 1, 1, 0)][ai_cl]: [msg]" + msg = "Request for Help: [get_options_bar(mob, 2, 1, 1)][ai_cl] [msg]" var/admin_number_afk = 0 diff --git a/code/modules/awaymissions/loot_vr.dm b/code/modules/awaymissions/loot_vr.dm index 33c377394b..d14a569f5b 100644 --- a/code/modules/awaymissions/loot_vr.dm +++ b/code/modules/awaymissions/loot_vr.dm @@ -166,7 +166,7 @@ /* prob(6);/obj/item/weapon/gun/projectile/SVD,\*/ prob(6);/obj/item/weapon/gun/projectile/automatic/l6_saw,\ prob(6);/obj/item/weapon/gun/energy/lasercannon,\ - prob(5);/obj/item/weapon/gun/projectile/automatic/carbine,\ + prob(5);/obj/item/weapon/gun/projectile/automatic/bullpup,\ prob(5);/obj/item/weapon/gun/energy/pulse_rifle,\ /* prob(4);/obj/item/weapon/gun/projectile/automatic/battlerifle,\ */ prob(3);/obj/item/weapon/gun/projectile/deagle/camo,\ @@ -355,6 +355,7 @@ /**********************************/ /obj/structure/symbol + anchored = 1 layer = 3.5 name = "strange symbol" icon = 'icons/obj/decals_vr.dmi' diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index c30291c3a5..5e7fa24d9f 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -90,4 +90,13 @@ /datum/gear/utility/pen display_name = "Fountain Pen" - path = /obj/item/weapon/pen/fountain \ No newline at end of file + path = /obj/item/weapon/pen/fountain + +/datum/gear/utility/wheelchair/color + display_name = "wheelchair" + path = /obj/item/wheelchair + cost = 4 + +/datum/gear/utility/wheelchair/color/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno.dm b/code/modules/client/preference_setup/loadout/loadout_xeno.dm index 83f59b3a7b..3ace6ac998 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno.dm @@ -83,31 +83,47 @@ ..() gear_tweaks = list(gear_tweak_free_color_choice) -/datum/gear/uniform/teshari - display_name = "smock, grey (Teshari)" - path = /obj/item/clothing/under/seromi +/datum/gear/uniform/smock + display_name = "smock selection (Teshari)" + path = /obj/item/clothing/under/seromi/smock whitelisted = "Teshari" sort_category = "Xenowear" -/datum/gear/uniform/teshari/jumpsuit - display_name = "smock, yellow (Teshari)" - path = /obj/item/clothing/under/seromi/yellow +/datum/gear/uniform/smock/New() + ..() + var/list/smocks = list() + for(var/smock in typesof(/obj/item/clothing/under/seromi/smock)) + var/obj/item/clothing/under/seromi/smock/smock_type = smock + smocks[initial(smock_type.name)] = smock_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(smocks)) -/datum/gear/uniform/teshari/jumpsuit/red - display_name = "smock, red (Teshari)" - path = /obj/item/clothing/under/seromi/red +/datum/gear/uniform/undercoat + display_name = "undercoat selection (Teshari)" + path = /obj/item/clothing/under/seromi/undercoat + whitelisted = "Teshari" + sort_category = "Xenowear" -/datum/gear/uniform/teshari/jumpsuit/white - display_name = "smock, white (Teshari)" - path = /obj/item/clothing/under/seromi/white +/datum/gear/uniform/undercoat/New() + ..() + var/list/undercoats = list() + for(var/undercoat in typesof(/obj/item/clothing/under/seromi/undercoat)) + var/obj/item/clothing/under/seromi/undercoat/undercoat_type = undercoat + undercoats[initial(undercoat_type.name)] = undercoat_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats)) -/datum/gear/uniform/teshari/jumpsuit/medical - display_name = "smock, Medical (Teshari)" - path = /obj/item/clothing/under/seromi/medical +/datum/gear/suit/cloak + display_name = "cloak selection (Teshari)" + path = /obj/item/clothing/suit/storage/seromi/cloak + whitelisted = "Teshari" + sort_category = "Xenowear" -/datum/gear/uniform/teshari/jumpsuit/rainbow - display_name = "smock, rainbow (Teshari)" - path = /obj/item/clothing/under/seromi/rainbow +/datum/gear/suit/cloak/New() + ..() + var/list/cloaks = list() + for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak)) + var/obj/item/clothing/suit/storage/seromi/cloak/cloak_type = cloak + cloaks[initial(cloak_type.name)] = cloak_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks)) /datum/gear/mask/ipc_monitor display_name = "display monitor (Full Body Prosthetic)" diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm index c1ca7b7fd1..e92908ed3c 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm @@ -33,33 +33,3 @@ path = /obj/item/clothing/mask/gas/swat/vox sort_category = "Xenowear" whitelisted = "Vox" - -//TESH STOOF - -/datum/gear/uniform/tesh_undercoats - display_name = "teshari undercoat selection" - path = /obj/item/clothing/under/seromi/undercoat/black_orange - sort_category = "Xenowear" - whitelisted = "Teshari" - -/datum/gear/uniform/tesh_undercoats/New() - ..() - var/list/undercoats= list() - for(var/coat in typesof(/obj/item/clothing/under/seromi/undercoat)) - var/obj/item/clothing/under/seromi/undercoat/coats = coat - undercoats[initial(coats.name)] = coats - gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats)) - -/datum/gear/suit/tesh_cloaks - display_name = "Teshari Cloak selection" - path = /obj/item/clothing/suit/storage/seromi/cloak/ - sort_category = "Xenowear" - whitelisted = "Teshari" - -/datum/gear/suit/tesh_cloaks/New()//i hate this code -the person who is trying for a whole day to make this code work - ..() - var/list/teshsuits = list() - for(var/tsuit in typesof(/obj/item/clothing/suit/storage/seromi/cloak)) - var/obj/item/clothing/suit/storage/seromi/cloak/tsuit_type = tsuit - teshsuits[initial(tsuit_type.name)] = tsuit_type - gear_tweaks += new/datum/gear_tweak/path(sortAssoc(teshsuits)) diff --git a/code/modules/client/preferences_spawnpoints.dm b/code/modules/client/preferences_spawnpoints.dm index 9277f038e7..c0c54169b2 100644 --- a/code/modules/client/preferences_spawnpoints.dm +++ b/code/modules/client/preferences_spawnpoints.dm @@ -22,9 +22,12 @@ var/list/spawntypes = list() return 1 +/datum/spawnpoint/proc/get_spawn_position() + return get_turf(pick(turfs)) + /datum/spawnpoint/arrivals display_name = "Arrivals Shuttle" - msg = "has arrived on the station" + msg = "will arrive to the station shortly by shuttle" /datum/spawnpoint/arrivals/New() ..() diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 6cf5d16c4a..106500add0 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -51,7 +51,7 @@ BLIND // can't see anything user.update_action_buttons() /obj/item/clothing/glasses/meson - name = "Optical Meson Scanner" + name = "optical meson scanner" desc = "Used for seeing walls, floors, and stuff through anything." icon_state = "meson" item_state_slots = list(slot_r_hand_str = "meson", slot_l_hand_str = "meson") @@ -70,7 +70,7 @@ BLIND // can't see anything prescription = 1 /obj/item/clothing/glasses/meson/aviator - name = "Engineering Aviators" + name = "engineering aviators" icon_state = "aviator_eng" off_state = "aviator" item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses") @@ -78,7 +78,7 @@ BLIND // can't see anything activation_sound = 'sound/effects/pop.ogg' /obj/item/clothing/glasses/meson/aviator/prescription - name = "Prescription Engineering Aviators" + name = "prescription engineering aviators" desc = "Engineering Aviators with prescription lenses." prescription = 1 @@ -96,7 +96,7 @@ BLIND // can't see anything overlay = global_hud.science /obj/item/clothing/glasses/goggles - name = "Goggles" + name = "goggles" desc = "Just some plain old goggles." icon_state = "plaingoggles" item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") @@ -104,7 +104,7 @@ BLIND // can't see anything body_parts_covered = EYES /obj/item/clothing/glasses/night - name = "Night Vision Goggles" + name = "night vision goggles" desc = "You can totally see in the dark now!" icon_state = "night" item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") @@ -154,7 +154,7 @@ BLIND // can't see anything body_parts_covered = 0 /obj/item/clothing/glasses/material - name = "Optical Material Scanner" + name = "optical material scanner" desc = "Very confusing glasses." icon_state = "material" item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") @@ -164,11 +164,11 @@ BLIND // can't see anything vision_flags = SEE_OBJS /obj/item/clothing/glasses/material/prescription - name = "Prescription Optical Material Scanner" + name = "prescription optical material scanner" prescription = 1 /obj/item/clothing/glasses/regular - name = "Prescription Glasses" + name = "prescription glasses" desc = "Made by Nerd. Co." icon_state = "glasses" item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") @@ -176,12 +176,12 @@ BLIND // can't see anything body_parts_covered = 0 /obj/item/clothing/glasses/regular/scanners - name = "Scanning Goggles" + name = "scanning goggles" desc = "A very oddly shaped pair of goggles with bits of wire poking out the sides. A soft humming sound emanates from it." icon_state = "uzenwa_sissra_1" /obj/item/clothing/glasses/regular/hipster - name = "Prescription Glasses" + name = "prescription glasses" desc = "Made by Uncool. Co." icon_state = "hipster_glasses" @@ -193,15 +193,15 @@ BLIND // can't see anything body_parts_covered = 0 /obj/item/clothing/glasses/gglasses - name = "Green Glasses" + name = "green glasses" desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme." icon_state = "gglasses" item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") body_parts_covered = 0 /obj/item/clothing/glasses/sunglasses - desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes." name = "sunglasses" + desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes." icon_state = "sun" item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses") darkness_view = -1 @@ -280,7 +280,7 @@ BLIND // can't see anything icon_state = "aviator" /obj/item/clothing/glasses/sunglasses/sechud - name = "HUDSunglasses" + name = "\improper HUD sunglasses" desc = "Sunglasses with a HUD." icon_state = "sunSecHud" var/obj/item/clothing/glasses/hud/security/hud = null @@ -296,7 +296,7 @@ BLIND // can't see anything icon_state = "swatgoggles" /obj/item/clothing/glasses/sunglasses/sechud/aviator - name = "Security HUD aviators" + name = "security HUD aviators" desc = "Modified aviator glasses that can be switch between HUD and flash protection modes." icon_state = "aviator_sec" off_state = "aviator" @@ -338,12 +338,12 @@ BLIND // can't see anything icon_state = off_state /obj/item/clothing/glasses/sunglasses/sechud/aviator/prescription - name = "Prescription Security HUD aviators" + name = "prescription security HUD aviators" desc = "Modified aviator glasses that can be switch between HUD and flash protection modes. Comes with bonus prescription lenses." prescription = 6 /obj/item/clothing/glasses/sunglasses/medhud - name = "HUDSunglasses" + name = "\improper HUD sunglasses" desc = "Sunglasses with a HUD." icon_state = "sunMedHud" var/obj/item/clothing/glasses/hud/health/hud = null @@ -354,7 +354,7 @@ BLIND // can't see anything return /obj/item/clothing/glasses/sunglasses/medhud/aviator - name = "Medical HUD aviators" + name = "medical HUD aviators" desc = "Modified aviator glasses with a toggled health HUD." icon_state = "aviator_med" off_state = "aviator" @@ -396,12 +396,12 @@ BLIND // can't see anything icon_state = off_state /obj/item/clothing/glasses/sunglasses/medhud/aviator/prescription - name = "Prescription Medical HUD aviators" + name = "prescription medical HUD aviators" desc = "Modified aviator glasses with a toggled health HUD. Comes with bonus prescription lenses." prescription = 6 /obj/item/clothing/glasses/thermal - name = "Optical Thermal Scanner" + name = "optical thermal scanner" desc = "Thermals in the shape of glasses." icon_state = "thermal" item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") @@ -431,7 +431,7 @@ BLIND // can't see anything overlay = global_hud.thermal /obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete - name = "Optical Meson Scanner" + name = "optical meson scanner" desc = "Used for seeing walls, floors, and stuff through anything." icon_state = "meson" item_state_slots = list(slot_r_hand_str = "meson", slot_l_hand_str = "meson") @@ -443,7 +443,7 @@ BLIND // can't see anything action_button_name = null /obj/item/clothing/glasses/thermal/plain/monocle - name = "Thermoncle" + name = "thermonocle" desc = "A monocle thermal." icon_state = "thermoncle" item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses") @@ -454,7 +454,7 @@ BLIND // can't see anything body_parts_covered = 0 /obj/item/clothing/glasses/thermal/plain/eyepatch - name = "Optical Thermal Eyepatch" + name = "optical thermal eyepatch" desc = "An eyepatch with built-in thermal optics" icon_state = "eyepatch" item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold") @@ -463,7 +463,7 @@ BLIND // can't see anything action_button_name = "Toggle Eyepatch" /obj/item/clothing/glasses/thermal/plain/jensen - name = "Optical Thermal Implants" + name = "optical thermal implants" desc = "A set of implantable lenses designed to augment your vision" icon_state = "thermalimplants" item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses") \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index 01c1861448..159957bddb 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -62,10 +62,6 @@ var/list/supporting_limbs //If not-null, automatically splints breaks. Checked when removing the suit. -/obj/item/clothing/suit/space/New() - ..() - desc += " \"[using_map.station_short]\" is written in large block letters on the back." - /obj/item/clothing/suit/space/equipped(mob/M) check_limb_support(M) ..() diff --git a/code/modules/clothing/suits/xenos/seromi.dm b/code/modules/clothing/suits/xenos/seromi.dm new file mode 100644 index 0000000000..ccba8986d5 --- /dev/null +++ b/code/modules/clothing/suits/xenos/seromi.dm @@ -0,0 +1,134 @@ +/obj/item/clothing/suit/storage/seromi/cloak + name = "black and orange cloak " + desc = "It drapes over a Teshari's shoulders and closes at the neck with pockets convienently placed inside." + icon = 'icons/mob/species/seromi/teshari_cloak.dmi' + icon_override = 'icons/mob/species/seromi/teshari_cloak.dmi' + icon_state = "tesh_cloak_bo" + item_state = "tesh_cloak_bo" + species_restricted = list("Teshari") + body_parts_covered = UPPER_TORSO|ARMS + +/obj/item/clothing/suit/storage/seromi/cloak/black_orange + name = "black and orange cloak" + icon_state = "tesh_cloak_bo" + item_state = "tesh_cloak_bo" + +/obj/item/clothing/suit/storage/seromi/cloak/black_grey + name = "black and grey cloak" + icon_state = "tesh_cloak_bg" + item_state = "tesh_cloak_bg" + +/obj/item/clothing/suit/storage/seromi/cloak/black_midgrey + name = "black and medium grey cloak" + icon_state = "tesh_cloak_bmg" + item_state = "tesh_cloak_bmg" + +/obj/item/clothing/suit/storage/seromi/cloak/black_lightgrey + name = "black and light grey cloak" + icon_state = "tesh_cloak_blg" + item_state = "tesh_cloak_blg" + +/obj/item/clothing/suit/storage/seromi/cloak/black_white + name = "black and white cloak" + icon_state = "tesh_cloak_bw" + item_state = "tesh_cloak_bw" + +/obj/item/clothing/suit/storage/seromi/cloak/black_red + name = "black and red cloak" + icon_state = "tesh_cloak_br" + item_state = "tesh_cloak_br" + +/obj/item/clothing/suit/storage/seromi/cloak/black + name = "black cloak" + icon_state = "tesh_cloak_bn" + item_state = "tesh_cloak_bn" + +/obj/item/clothing/suit/storage/seromi/cloak/black_yellow + name = "black and yellow cloak" + icon_state = "tesh_cloak_by" + item_state = "tesh_cloak_by" + +/obj/item/clothing/suit/storage/seromi/cloak/black_green + name = "black and Green cloak" + icon_state = "tesh_cloak_bgr" + item_state = "tesh_cloak_bgr" + +/obj/item/clothing/suit/storage/seromi/cloak/black_blue + name = "black and blue cloak" + icon_state = "tesh_cloak_bbl" + item_state = "tesh_cloak_bbl" + +/obj/item/clothing/suit/storage/seromi/cloak/black_purple + name = "black and purple cloak" + icon_state = "tesh_cloak_bp" + item_state = "tesh_cloak_bp" + +/obj/item/clothing/suit/storage/seromi/cloak/black_pink + name = "black and pink cloak" + icon_state = "tesh_cloak_bpi" + item_state = "tesh_cloak_bpi" + +/obj/item/clothing/suit/storage/seromi/cloak/black_brown + name = "black and brown cloak" + icon_state = "tesh_cloak_bbr" + item_state = "tesh_cloak_bbr" + +/obj/item/clothing/suit/storage/seromi/cloak/orange_grey + name = "orange and grey cloak" + icon_state = "tesh_cloak_og" + item_state = "tesh_cloak_og" + +/obj/item/clothing/suit/storage/seromi/cloak/rainbow + name = "rainbow cloak" + icon_state = "tesh_cloak_rainbow" + item_state = "tesh_cloak_rainbow" + +/obj/item/clothing/suit/storage/seromi/cloak/lightgrey_grey + name = "light grey and grey cloak" + icon_state = "tesh_cloak_lgg" + item_state = "tesh_cloak_lgg" + +/obj/item/clothing/suit/storage/seromi/cloak/white_grey + name = "white and grey cloak" + icon_state = "tesh_cloak_wg" + item_state = "tesh_cloak_wg" + +/obj/item/clothing/suit/storage/seromi/cloak/red_grey + name = "red and grey cloak" + icon_state = "tesh_cloak_rg" + item_state = "tesh_cloak_rg" + +/obj/item/clothing/suit/storage/seromi/cloak/orange + name = "orange cloak" + icon_state = "tesh_cloak_on" + item_state = "tesh_cloak_on" + +/obj/item/clothing/suit/storage/seromi/cloak/yellow_grey + name = "yellow and grey cloak" + icon_state = "tesh_cloak_yg" + item_state = "tesh_cloak_yg" + +/obj/item/clothing/suit/storage/seromi/cloak/green_grey + name = "green and grey cloak" + icon_state = "tesh_cloak_gg" + item_state = "tesh_cloak_gg" + +/obj/item/clothing/suit/storage/seromi/cloak/blue_grey + name = "blue and grey cloak" + icon_state = "tesh_cloak_blg" + item_state = "tesh_cloak_blg" + +/obj/item/clothing/suit/storage/seromi/cloak/purple_grey + name = "purple and grey cloak" + icon_state = "tesh_cloak_pg" + item_state = "tesh_cloak_pg" + +/obj/item/clothing/suit/storage/seromi/cloak/pink_grey + name = "black and orange cloak" + icon_state = "tesh_cloak_pig" + item_state = "tesh_cloak_pig" + +/obj/item/clothing/suit/storage/seromi/cloak/brown_grey + name = "purple and grey cloak" + icon_state = "tesh_cloak_brg" + item_state = "tesh_cloak_brg" \ No newline at end of file diff --git a/code/modules/clothing/under/xenos/seromi.dm b/code/modules/clothing/under/xenos/seromi.dm index 16eb2c47fe..f99317b7d0 100644 --- a/code/modules/clothing/under/xenos/seromi.dm +++ b/code/modules/clothing/under/xenos/seromi.dm @@ -1,27 +1,167 @@ /obj/item/clothing/under/seromi - name = "small grey smock" - desc = "It looks fitted to nonhuman proportions." icon = 'icons/obj/clothing/species/seromi/uniform.dmi' icon_state = "seromi_grey" species_restricted = list("Teshari") + +/obj/item/clothing/under/seromi/smock + name = "small grey smock" + desc = "It looks fitted to nonhuman proportions." + icon_state = "seromi_grey" body_parts_covered = 0 // It's a thin piece of cloth with a neck hole. -/obj/item/clothing/under/seromi/white +/obj/item/clothing/under/seromi/smock/white name = "small white smock" icon_state = "seromi_white" -/obj/item/clothing/under/seromi/red +/obj/item/clothing/under/seromi/smock/red name = "small Security smock" icon_state = "seromi_red" -/obj/item/clothing/under/seromi/yellow +/obj/item/clothing/under/seromi/smock/yellow name = "small Engineering smock" icon_state = "seromi_yellow" -/obj/item/clothing/under/seromi/medical +/obj/item/clothing/under/seromi/smock/medical name = "small Medical uniform" icon_state = "seromi_medical" - -/obj/item/clothing/under/seromi/rainbow + +/obj/item/clothing/under/seromi/smock/science + name = "small Research uniform" + icon_state = "teshari_science" + +/obj/item/clothing/under/seromi/smock/rainbow name = "small rainbow smock" - icon_state = "seromi_rainbow" \ No newline at end of file + icon_state = "seromi_rainbow" + +/obj/item/clothing/under/seromi/undercoat + desc = "A Teshari traditional garb, with a modern twist! Made of micro and nanofibres to make it light and billowy, perfect for going fast and stylishly!" + icon = 'icons/mob/species/seromi/teshari_uniform.dmi' + icon_override = 'icons/mob/species/seromi/teshari_uniform.dmi' + icon_state = "tesh_uniform_bo" + item_state = "tesh_uniform_bo" + body_parts_covered = UPPER_TORSO|LOWER_TORSO + +/obj/item/clothing/under/seromi/undercoat/black_orange + name = "black and orange undercoat" + icon_state = "tesh_uniform_bo" + item_state = "tesh_uniform_bo" + +/obj/item/clothing/under/seromi/undercoat/black_grey + name = "black and grey undercoat" + icon_state = "tesh_uniform_bg" + item_state = "tesh_uniform_bg" + +/obj/item/clothing/under/seromi/undercoat/black_midgrey + name = "black and medium grey undercoat" + icon_state = "tesh_uniform_bmg" + item_state = "tesh_uniform_bmg" + +/obj/item/clothing/under/seromi/undercoat/black_lightgrey + name = "black and light grey undercoat" + icon_state = "tesh_uniform_blg" + item_state = "tesh_uniform_blg" + +/obj/item/clothing/under/seromi/undercoat/black_white + name = "black and white undercoat" + icon_state = "tesh_uniform_bw" + item_state = "tesh_uniform_bw" + +/obj/item/clothing/under/seromi/undercoat/black_red + name = "black and red undercoat" + icon_state = "tesh_uniform_br" + item_state = "tesh_uniform_br" + +/obj/item/clothing/under/seromi/undercoat/black + name = "black undercoat" + icon_state = "tesh_uniform_bn" + item_state = "tesh_uniform_bn" + +/obj/item/clothing/under/seromi/undercoat/black_yellow + name = "black and yellow undercoat" + icon_state = "tesh_uniform_by" + item_state = "tesh_uniform_by" + +/obj/item/clothing/under/seromi/undercoat/black_green + name = "black and Green undercoat" + icon_state = "tesh_uniform_bgr" + item_state = "tesh_uniform_bgr" + +/obj/item/clothing/under/seromi/undercoat/black_blue + name = "black and blue undercoat" + icon_state = "tesh_uniform_bbl" + item_state = "tesh_uniform_bbl" + +/obj/item/clothing/under/seromi/undercoat/black_purple + name = "black and purple undercoat" + icon_state = "tesh_uniform_bp" + item_state = "tesh_uniform_bp" + +/obj/item/clothing/under/seromi/undercoat/black_pink + name = "black and pink undercoat" + icon_state = "tesh_uniform_bpi" + item_state = "tesh_uniform_bpi" + +/obj/item/clothing/under/seromi/undercoat/black_brown + name = "black and brown undercoat" + icon_state = "tesh_uniform_bbr" + item_state = "tesh_uniform_bbr" + +/obj/item/clothing/under/seromi/undercoat/orange_grey + name = "orange and grey undercoat" + icon_state = "tesh_uniform_og" + item_state = "tesh_uniform_og" + +/obj/item/clothing/under/seromi/undercoat/rainbow + name = "rainbow undercoat" + icon_state = "tesh_uniform_rainbow" + item_state = "tesh_uniform_rainbow" + +/obj/item/clothing/under/seromi/undercoat/lightgrey_grey + name = "light grey and grey undercoat" + icon_state = "tesh_uniform_lgg" + item_state = "tesh_uniform_lgg" + +/obj/item/clothing/under/seromi/undercoat/white_grey + name = "white and grey undercoat" + icon_state = "tesh_uniform_wg" + item_state = "tesh_uniform_wg" + +/obj/item/clothing/under/seromi/undercoat/red_grey + name = "red and grey undercoat" + icon_state = "tesh_uniform_rg" + item_state = "tesh_uniform_rg" + +/obj/item/clothing/under/seromi/undercoat/orange + name = "orange undercoat" + icon_state = "tesh_uniform_on" + item_state = "tesh_uniform_on" + +/obj/item/clothing/under/seromi/undercoat/yellow_grey + name = "yellow and grey undercoat" + icon_state = "tesh_uniform_yg" + item_state = "tesh_uniform_yg" + +/obj/item/clothing/under/seromi/undercoat/green_grey + name = "green and grey undercoat" + icon_state = "tesh_uniform_gg" + item_state = "tesh_uniform_gg" + +/obj/item/clothing/under/seromi/undercoat/blue_grey + name = "blue and grey undercoat" + icon_state = "tesh_uniform_blg" + item_state = "tesh_uniform_blg" + +/obj/item/clothing/under/seromi/undercoat/purple_grey + name = "purple and grey undercoat" + icon_state = "tesh_uniform_pg" + item_state = "tesh_uniform_pg" + +/obj/item/clothing/under/seromi/undercoat/pink_grey + name = "black and orange undercoat" + icon_state = "tesh_uniform_pig" + item_state = "tesh_uniform_pig" + +/obj/item/clothing/under/seromi/undercoat/brown_grey + name = "purple and grey undercoat" + icon_state = "tesh_uniform_brg" + item_state = "tesh_uniform_brg" \ No newline at end of file diff --git a/code/modules/economy/economy_misc.dm b/code/modules/economy/economy_misc.dm index 78c9e7d012..a2cc9aafb9 100644 --- a/code/modules/economy/economy_misc.dm +++ b/code/modules/economy/economy_misc.dm @@ -50,10 +50,10 @@ /var/list/economic_species_modifier = list( /datum/species/human = 10, /datum/species/skrell = 12, - /datum/species/teshari = 9, // Skrell sponsored, - /datum/species/tajaran = 7, /datum/species/unathi = 7, - /datum/species/diona = 7, + /datum/species/tajaran = 7, + /datum/species/teshari = 6, + /datum/species/diona = 4, /datum/species/shapeshifter/promethean = 3 ) diff --git a/code/modules/integrated_electronics/core/special_pins/color_pin.dm b/code/modules/integrated_electronics/core/special_pins/color_pin.dm index 0fa82b4506..2d20560fb6 100644 --- a/code/modules/integrated_electronics/core/special_pins/color_pin.dm +++ b/code/modules/integrated_electronics/core/special_pins/color_pin.dm @@ -6,7 +6,6 @@ var/new_data = input("Please select a color.","[src] color writing") as null|color if(holder.check_interactivity(user) ) to_chat(user, "You input a new color into the pin.") - world << "new_data equals [new_data]." write_data_to_pin(new_data) /datum/integrated_io/color/write_data_to_pin(var/new_data) @@ -15,24 +14,18 @@ if(istext(new_data)) new_data = uppertext(new_data) if(length(new_data) != 7) // We can hex if we want to, we can leave your strings behind - world << "Wrong length." return // Cause your strings don't hex and if they don't hex var/friends = copytext(new_data, 2, 8) // Well they're are no strings of mine - world << "friends equal [friends]." // I say, we can go where we want to, a place where they will never find var/safety_dance = 1 while(safety_dance >= 7) // And we can act like we come from out of this world.log var/hex = copytext(friends, safety_dance, safety_dance+1) - world << "Checking [hex]." if(!(hex in list("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"))) - world << "Hex [hex] failed" return // Leave the fake one far behind, safety_dance++ data = new_data // And we can hex holder.on_data_written() - world << "Done." - world << "Rip." // This randomizes the color. /datum/integrated_io/color/scramble() diff --git a/code/modules/integrated_electronics/core/special_pins/list_pin.dm b/code/modules/integrated_electronics/core/special_pins/list_pin.dm index 535a535514..77d83f82b5 100644 --- a/code/modules/integrated_electronics/core/special_pins/list_pin.dm +++ b/code/modules/integrated_electronics/core/special_pins/list_pin.dm @@ -133,7 +133,6 @@ clear_list(usr) if(href_list["remove"]) - world << "Removing [href_list["pos"]]" if(href_list["pos"]) remove_from_list_by_position(usr, text2num(href_list["pos"])) else diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index 2b8c200a27..c417c3e4fd 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -101,6 +101,6 @@ return var/area/A = get_area(src) if(A) - if(A.powered(EQUIP)) + if(A.powered(EQUIP) && assembly.give_power(power_amount)) A.use_power(power_amount, EQUIP) - assembly.give_power(power_amount) // give_power() handles CELLRATE on its own. + // give_power() handles CELLRATE on its own. diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 7503563c9d..27d83bd1a2 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -533,11 +533,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/obj/machinery/atmospherics/unary/vent_pump/vent_found var/list/found_vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/v in machines) - if(!v.welded && v.z == T.z) + if(!v.welded && v.z == T.z && v.network && v.network.normal_members.len > 20) found_vents.Add(v) if(found_vents.len) vent_found = pick(found_vents) - host = new /mob/living/simple_animal/mouse(vent_found.loc) + host = new /mob/living/simple_animal/mouse(vent_found) else src << "Unable to find any unwelded vents to spawn mice at." @@ -546,6 +546,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp host.universal_understand = 0 announce_ghost_joinleave(src, 0, "They are now a mouse.") host.ckey = src.ckey + host.add_ventcrawl(vent_found) host << "You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent." /mob/observer/dead/verb/view_manfiest() diff --git a/code/modules/mob/dead/observer/observer_vr.dm b/code/modules/mob/dead/observer/observer_vr.dm new file mode 100644 index 0000000000..3fdc365ef0 --- /dev/null +++ b/code/modules/mob/dead/observer/observer_vr.dm @@ -0,0 +1,12 @@ +/mob/observer/dead/verb/paialert() + set category = "Ghost" + set name = "Blank pAI alert" + set desc = "Flash an indicator light on available blank pAI devices for a smidgen of hope." + if(usr.client.prefs.be_special & BE_PAI) + for(var/obj/item/device/paicard/p in world) + var/obj/item/device/paicard/PP = p + if(PP.pai == null) + PP.icon = 'icons/obj/pda_vr.dmi' + PP.overlays += "pai-ghostalert" + spawn(54) + PP.overlays.Cut() \ No newline at end of file diff --git a/code/modules/mob/language/station_vr.dm b/code/modules/mob/language/station_vr.dm index 58ac51e00e..43fdf6d9a0 100644 --- a/code/modules/mob/language/station_vr.dm +++ b/code/modules/mob/language/station_vr.dm @@ -75,9 +75,28 @@ syllables = list("sque","sqah","boo","beh","nweh","boopa","nah","wah","een","sweh") /datum/language/demon - flags = 0 + name = "Daemon" + desc = "The language spoken by the demons of Infernum, it's composed of deep chanting. It's rarely spoken off of Infernum due to the volume one has to exert." + speech_verb = "chants" + ask_verb = "croons" + exclaim_verb = "incants" + colour = "daemon" //So fancy + key = "n" + syllables = list("viepn","e","bag","docu","kar","xlaqf","raa","qwos","nen","ty","von","kytaf","xin","ty","ka","baak","hlafaifpyk","znu","agrith","na'ar","uah","plhu","six","fhler","bjel","scee","lleri", + "dttm","aggr","uujl","hjjifr","wwuthaav",) + /datum/language/angel - flags = 0 + name = "Enochian" + desc = "The graceful language spoken by angels, composed of quiet hymns. Formally, Angels sing it." + speech_verb = "sings" + ask_verb = "hums" + exclaim_verb = "loudly sings" + colour = "enochian" //So fancy + key = "a" + syllables = list("salve","sum","loqui","operatur","iusta","et","permittit","facere","effercio","pluribus","enim","hoc", + "mihi","wan","six","salve","tartu") + + /datum/language/unathi flags = 0 /datum/language/tajaran diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 1e2185fbf3..9f1f778ad2 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -68,7 +68,8 @@ var/turf/T = get_turf_or_move(src.loc) for (var/mob/M in viewers(T)) - M.show_message("The positronic brain chimes quietly.") + M.show_message("The positronic brain beeps as it loads a personality.") + playsound(src, 'sound/misc/boobeebeep.ogg', 50, 1) icon_state = "posibrain-occupied" /obj/item/device/mmi/digital/posibrain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer. @@ -81,7 +82,8 @@ var/turf/T = get_turf_or_move(src.loc) for (var/mob/M in viewers(T)) - M.show_message("The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?") + M.show_message("The positronic brain buzzes and beeps, and the golden lights fade away. Perhaps you could try again?") + playsound(src, 'sound/misc/buzzbeep.ogg', 50, 1) /obj/item/device/mmi/digital/posibrain/examine(mob/user) if(!..(user)) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 4cbb691239..ca82ecd345 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -41,7 +41,7 @@ var/obj/item/organ/external/E = get_organ(organ_name) if(!E || E.is_stump()) tally += 4 - if(E.splinted) + else if(E.splinted) tally += 0.5 else if(E.status & ORGAN_BROKEN) tally += 1.5 diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 9b76cfef61..600e15b4b3 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -259,9 +259,16 @@ t_him = "him" if(FEMALE) t_him = "her" - - H.visible_message("[H] hugs [target] to make [t_him] feel better!", \ - "You hug [target] to make [t_him] feel better!") + if(H.zone_sel.selecting == "head") //VOREStation Edit - Headpats and Handshakes. + H.visible_message( \ + "[H] pats [target] on the head.", \ + "You pat [target] on the head.", ) + else if(H.zone_sel.selecting == "r_hand" || H.zone_sel.selecting == "l_hand") + H.visible_message( \ + "[H] shakes [target]'s hand.", \ + "You shake [target]'s hand.", ) + else H.visible_message("[H] hugs [target] to make [t_him] feel better!", \ + "You hug [target] to make [t_him] feel better!") //End VOREStation Edit /datum/species/proc/remove_inherent_verbs(var/mob/living/carbon/human/H) if(inherent_verbs) diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm index c439aef209..b9eeba318f 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -22,7 +22,9 @@ var/datum/species/shapeshifter/promethean/prometheans push_flags = MONKEY|SLIME|SIMPLE_ANIMAL flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | RADIATION_GLOWS - spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED //VOREStation Edit + + spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED + health_hud_intensity = 2 breath_type = null diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm index 514c42ec6a..d2019789fe 100644 --- a/code/modules/mob/living/carbon/human/species/station/seromi.dm +++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm @@ -13,6 +13,12 @@ max_age = 45 health_hud_intensity = 3 + + male_cough_sounds = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg') + female_cough_sounds = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg') + male_sneeze_sound = 'sound/effects/mob_effects/tesharisneeze.ogg' + female_sneeze_sound = 'sound/effects/mob_effects/tesharisneeze.ogg' + blood_color = "#D514F7" flesh_color = "#5F7BB0" base_color = "#001144" @@ -95,5 +101,4 @@ /datum/species/teshari/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) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 8e5220af6e..59e4137ee5 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -313,21 +313,20 @@ var/finalized = "No" while(finalized == "No" && src.client) - choice = input(usr,"What would you like to use for your mobile chassis icon? This decision can only be made once.") as null|anything in possible_chassis + choice = input(usr,"What would you like to use for your mobile chassis icon?") as null|anything in possible_chassis if(!choice) return icon_state = possible_chassis[choice] finalized = alert("Look at your sprite. Is this what you wish to use?",,"No","Yes") chassis = possible_chassis[choice] - verbs -= /mob/living/silicon/pai/proc/choose_chassis - verbs += /mob/living/proc/hide + verbs |= /mob/living/proc/hide /mob/living/silicon/pai/proc/choose_verbs() set category = "pAI Commands" set name = "Choose Speech Verbs" - var/choice = input(usr,"What theme would you like to use for your speech verbs? This decision can only be made once.") as null|anything in possible_say_verbs + var/choice = input(usr,"What theme would you like to use for your speech verbs?") as null|anything in possible_say_verbs if(!choice) return var/list/sayverbs = possible_say_verbs[choice] @@ -335,8 +334,6 @@ speak_exclamation = sayverbs[(sayverbs.len>1 ? 2 : sayverbs.len)] speak_query = sayverbs[(sayverbs.len>2 ? 3 : sayverbs.len)] - verbs -= /mob/living/silicon/pai/proc/choose_verbs - /mob/living/silicon/pai/lay_down() set name = "Rest" set category = "IC" diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm index 71f55a8c87..b48c45e1c1 100644 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ b/code/modules/mob/living/silicon/robot/examine.dm @@ -30,6 +30,12 @@ if(UNCONSCIOUS) msg += "It doesn't seem to be responding.\n" if(DEAD) msg += "It looks completely unsalvageable.\n" msg += attempt_vr(src,"examine_bellies_borg",args) //VOREStation Edit + + // VOREStation Edit: Start + if(ooc_notes) + msg += "OOC Notes: \[View\]\n" + // VOREStation Edit: End + msg += "*---------*" if(print_flavor_text()) msg += "\n[print_flavor_text()]\n" diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index abc96aa825..6607319438 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -310,6 +310,10 @@ flavor_text = module_flavour else flavor_text = client.prefs.flavour_texts_robot["Default"] + // Vorestation Edit: and meta info + var/meta_info = client.prefs.metadata + if (meta_info) + ooc_notes = meta_info /mob/living/silicon/robot/verb/Namepick() set category = "Robot Commands" @@ -765,6 +769,11 @@ if (href_list["showalerts"]) subsystem_alarm_monitor() return 1 + // VOREStation Edit: Start + if(href_list["ooc_notes"]) + src.Examine_OOC() + return + // VOREStation Edit: End if (href_list["mod"]) var/obj/item/O = locate(href_list["mod"]) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 01d277a7e4..b75032e943 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -155,6 +155,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/device/flash(src) src.modules += new /obj/item/weapon/crowbar/cyborg(src) src.modules += new /obj/item/weapon/extinguisher(src) + vr_new() // Vorestation Edit: For modules in robot_modules_vr.dm /obj/item/weapon/robot_module/robot/standard name = "standard robot module" diff --git a/code/modules/mob/living/silicon/robot/robot_modules_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules_vr.dm index 0a9f0dabbc..6d94d0da59 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules_vr.dm @@ -5,6 +5,17 @@ robot_modules["Janihound"] = /obj/item/weapon/robot_module/scrubpup return 1 +//Just add a new proc with the robot_module type if you wish to run some other vore code +/obj/item/weapon/robot_module/proc/vr_new() // Any Global modules, just add them before the return (This will also affect all the borgs in this file) + return + +/obj/item/weapon/robot_module/robot/medical/surgeon/vr_new() //Surgeon Bot + src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people. + . = ..() //Any Global vore modules will come from here + +/obj/item/weapon/robot_module/robot/medical/crisis/vr_new() //Crisis Bot + src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people. + . = ..() //Any Global vore modules will come from here /obj/item/weapon/robot_module/knine name = "k9 robot module" @@ -90,7 +101,6 @@ R.old_x = -16 ..() - /obj/item/weapon/robot_module/ert name = "Emergency Responce module" channels = list("Security" = 1) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 8bd96e9fc4..b5fdb02bd5 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -245,14 +245,14 @@ if((stat == CONSCIOUS) && (!icon_rest || !resting)) icon_state = icon_living - //Resting or KO'd - else if(((stat == UNCONSCIOUS) || resting) && icon_rest) - icon_state = icon_rest - //Dead else if(stat >= DEAD) icon_state = icon_dead + //Resting or KO'd + else if(((stat == UNCONSCIOUS) || resting) && icon_rest) + icon_state = icon_rest + //Backup else icon_state = initial(icon_state) diff --git a/code/modules/mob/living/simple_animal/vore/otie.dm b/code/modules/mob/living/simple_animal/vore/otie.dm index bdf43fb363..d9083acd57 100644 --- a/code/modules/mob/living/simple_animal/vore/otie.dm +++ b/code/modules/mob/living/simple_animal/vore/otie.dm @@ -1,3 +1,5 @@ +// ToDo: Make this code not a fucking snowflaky horrible broken mess. Do not use until it's actually fixed. It's miserably bad right now. + /mob/living/simple_animal/otie //Spawn this one only if you're looking for a bad time. Not friendly. name = "otie" desc = "The classic bioengineered longdog." diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 602ff9232b..ff4da22fa0 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -193,6 +193,8 @@ // Check if this atom prevents things standing on it from falling. Return TRUE to allow the fall. /obj/proc/CanFallThru(atom/movable/mover as mob|obj, turf/target as turf) + if(!isturf(mover.loc)) // VORESTATION EDIT. We clearly didn't have enough backup checks. + return FALSE //If this ain't working Ima be pissed. return TRUE // Things that prevent objects standing on them from falling into turf below diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index 8cf9099978..02916c7d7d 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -148,6 +148,23 @@ var/global/list/limb_icon_cache = list() if(model) icon_cache_key += "_model_[model]" apply_colouration(mob_icon) + // VOREStation edit to enable markings on synths + for(var/M in markings) + var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] + var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") + mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit + overlays |= mark_s //So when it's not on your body, it has icons + mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons + icon_cache_key += "[M][markings[M]["color"]]" + + if(body_hair && islist(h_col) && h_col.len >= 3) + var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]" + if(!limb_icon_cache[cache_key]) + var/icon/I = icon(species.get_icobase(owner), "[icon_name]_[body_hair]") + I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_ADD) + limb_icon_cache[cache_key] = I + mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) + // VOREStation edit ends here dir = EAST icon = mob_icon diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm index 6abae65fbb..1be793fb6a 100644 --- a/code/modules/organs/robolimbs.dm +++ b/code/modules/organs/robolimbs.dm @@ -21,7 +21,9 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ scroll=ipc_scroll;\ console=ipc_console;\ glider=ipc_gol_glider;\ - rainbow=ipc_rainbow" + rainnbow=ipc_rainbow;\ + smiley=ipc_smiley;\ + database=ipc_database" /proc/populate_robolimb_list() basic_robolimb = new() @@ -79,6 +81,35 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ parts = list(BP_HEAD) monitor_styles = standard_monitor_styles +/datum/robolimb/grayson + company = "Grayson" + desc = "This limb has a sturdy and heavy build to it." + icon = 'icons/mob/human_races/cyberlimbs/grayson/grayson_main.dmi' + unavailable_to_build = 1 + monitor_styles = "blank=grayson_off;\ + green=grayson_green;\ + rgb=grayson_rgb" + +/datum/robolimb/grayson_alt1 + company = "Grayson - Reinforced" + desc = "This limb has a sturdy and heavy build to it." + icon = 'icons/mob/human_races/cyberlimbs/grayson/grayson_alt1.dmi' + unavailable_to_build = 1 + parts = list(BP_HEAD) + monitor_styles = "blank=grayson_alt_off;\ + green=grayson_alt_green;\ + scroll=grayson_alt_scroll;\ + rgb=grayson_alt_rgb;\ + rainbow=grayson_alt_rainbow" + +/datum/robolimb/grayson_monitor + company = "Grayson Monitor" + desc = "This limb has a sturdy and heavy build to it, and uses plastics in the place of glass for the monitor." + icon = 'icons/mob/human_races/cyberlimbs/grayson/grayson_monitor.dmi' + unavailable_to_build = 1 + parts = list(BP_HEAD) + monitor_styles = standard_monitor_styles + /datum/robolimb/hephaestus company = "Hephaestus" desc = "This limb has a militaristic black and green casing with gold stripes." @@ -199,6 +230,9 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ /obj/item/weapon/disk/limb/bishop company = "Bishop" +/obj/item/weapon/disk/limb/grayson + company = "Grayson" + /obj/item/weapon/disk/limb/hephaestus company = "Hephaestus" diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index e7dfe7d095..990c97b1c2 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -79,7 +79,6 @@ /obj/item/weapon/pen/reagent flags = OPENCONTAINER - slot_flags = SLOT_BELT origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) /obj/item/weapon/pen/reagent/New() diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 7e4de1841c..dd5c5336bd 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -302,7 +302,7 @@ var/list/solars_list = list() M.unset_control() if(connected_tracker) connected_tracker.unset_control() - ..() + return ..() /obj/machinery/power/solar_control/disconnect_from_network() ..() @@ -408,25 +408,23 @@ var/list/solars_list = list() if(do_after(user, 20)) if (src.stat & BROKEN) user << "The broken glass falls out." - var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/structure/frame/A = new /obj/structure/frame/computer( src.loc ) new /obj/item/weapon/material/shard( src.loc ) var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A ) for (var/obj/C in src) C.loc = src.loc A.circuit = M - A.frame_type = "computer" A.state = 3 A.icon_state = "computer_3" A.anchored = 1 qdel(src) else user << "You disconnect the monitor." - var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/structure/frame/A = new /obj/structure/frame/computer( src.loc ) var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A ) for (var/obj/C in src) C.loc = src.loc A.circuit = M - A.frame_type = "computer" A.state = 4 A.icon_state = "computer_4" A.anchored = 1 diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 2e8373866c..c3f9532a51 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -460,6 +460,23 @@ name = "rifle clip (7.62mm practice)" ammo_type = /obj/item/ammo_casing/a762p +/obj/item/ammo_magazine/m762svd + name = "\improper SVD magazine (7.62mm)" + icon_state = "SVD" + mag_type = MAGAZINE + caliber = "7.62mm" + matter = list(DEFAULT_WALL_MATERIAL = 2000) + ammo_type = /obj/item/ammo_casing/a762 + max_ammo = 10 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m762svd/ap + name = "\improper SVD magazine (7.62mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a762/ap + +/obj/item/ammo_magazine/m762svd/empty + initial_ammo = 0 + ///////// 12g ///////// /obj/item/ammo_magazine/m12gdrum @@ -487,10 +504,34 @@ /obj/item/ammo_magazine/m12gdrum/empty initial_ammo = 0 +/obj/item/ammo_magazine/clip/c12g + name = "ammo clip (12g slug)" + icon_state = "12gclipslug" //largely a codersprite, looks good enough. feel free to make a better one. + desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with slugs." + caliber = "12g" + ammo_type = /obj/item/ammo_casing/a12g + matter = list(DEFAULT_WALL_MATERIAL = 1790) // slugs shells x4 + 350 metal for the clip itself. + max_ammo = 4 + multiple_sprites = 1 + +/obj/item/ammo_magazine/clip/c12g/pellet + name = "ammo clip (12g buckshot)" + icon_state = "12gclipshell" + desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with buckshot." + ammo_type = /obj/item/ammo_casing/a12g/pellet + matter = list(DEFAULT_WALL_MATERIAL = 1790) // buckshot and slugs cost the same + +/obj/item/ammo_magazine/clip/c12g/beanbag + name = "ammo clip (12g beanbag)" + icon_state = "12gclipbeanbag" + desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with beanbags." + ammo_type = /obj/item/ammo_casing/a12g/beanbag + matter = list(DEFAULT_WALL_MATERIAL = 1070) //beanbags x4 + 350 metal + ///////// .75 Gyrojet ///////// /obj/item/ammo_magazine/m75 - name = "ammo magazine (.75 Gyrojet)" + name = "magazine (.75 Gyrojet)" icon_state = "75" mag_type = MAGAZINE caliber = ".75" @@ -511,32 +552,4 @@ ammo_type = /obj/item/ammo_casing/cap matter = list(DEFAULT_WALL_MATERIAL = 600) max_ammo = 7 - multiple_sprites = 1 - - -/obj/item/ammo_magazine/clip/c12g - name = "ammo clip (12g slug)" - icon_state = "12gclip_s" //largely a codersprite, looks good enough. feel free to make a better one. - desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with slugs." - caliber = "12g" - ammo_type = /obj/item/ammo_casing/a12g - matter = list(DEFAULT_WALL_MATERIAL = 1790) // slugs shells x4 + 350 metal for the clip itself. - max_ammo = 4 - -/obj/item/ammo_magazine/clip/c12g/pellet - name = "ammo clip (12g buckshot)" - icon_state = "12gclip_p" - desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with buckshot." - ammo_type = /obj/item/ammo_casing/a12g/pellet - matter = list(DEFAULT_WALL_MATERIAL = 1790) // buckshot and slugs cost the same - -/obj/item/ammo_magazine/clip/c12g/beanbag - name = "ammo clip (12g beanbag)" - icon_state = "12gclip_bean" - desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with beanbags." - ammo_type = /obj/item/ammo_casing/a12g/beanbag - matter = list(DEFAULT_WALL_MATERIAL = 1070) //beanbags x4 + 350 metal - - - - + multiple_sprites = 1 \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 604c936172..de28d0d7c5 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -111,7 +111,8 @@ obj/item/weapon/gun/energy/retro desc = "The HI DMR 9E is an older design of Hesphaistos Industries. A designated marksman rifle capable of shooting powerful \ ionized beams, this is a weapon to kill from a distance." icon_state = "sniper" - item_state_slots = list(slot_r_hand_str = "laser", slot_l_hand_str = "laser") //placeholder + item_state = "sniper" + item_state_slots = list(slot_r_hand_str = "z8carbine", slot_l_hand_str = "z8carbine") //placeholder fire_sound = 'sound/weapons/gauss_shoot.ogg' origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4) projectile_type = /obj/item/projectile/beam/sniper diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 85cb07264f..16aaf4c14d 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -23,7 +23,7 @@ /obj/item/weapon/gun/projectile/automatic/c20r name = "submachine gun" - desc = "The C-20r is a lightweight and rapid firing SMG, for when you REALLY need someone dead. Uses 10mm rounds. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp." + desc = "The C-20r is a lightweight and rapid firing SMG, for when you REALLY need someone dead. It has 'Scarborough Arms - Per falcis, per pravitas' inscribed on the stock. Uses 10mm rounds." icon_state = "c20r" item_state = "c20r" w_class = ITEMSIZE_NORMAL @@ -51,7 +51,7 @@ /obj/item/weapon/gun/projectile/automatic/sts35 name = "assault rifle" - desc = "The rugged STS-35 is a durable automatic weapon of a make popular on the frontier worlds. Uses 5.45mm rounds. This one is unmarked." + desc = "The rugged STS-35 is a durable automatic weapon of a make popular on the frontier worlds. Uses 5.45mm rounds." icon_state = "arifle" item_state = null w_class = ITEMSIZE_LARGE @@ -173,7 +173,7 @@ /obj/item/weapon/gun/projectile/automatic/l6_saw name = "light machine gun" - desc = "A rather traditionally made L6 SAW with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2531' engraved on the reciever" + desc = "A rather traditionally made L6 SAW with a pleasantly lacquered wooden pistol grip. 'Aussec Armoury-2531' is engraved on the reciever. Uses 5.45mm rounds. It's also compatible with magazines from STS-35 assault rifles." icon_state = "l6closed100" item_state = "l6closed" w_class = ITEMSIZE_LARGE @@ -245,7 +245,7 @@ /obj/item/weapon/gun/projectile/automatic/as24 name = "automatic shotgun" - desc = "The AS-24 is a durable, rugged looking automatic weapon of a make popular on the frontier worlds. Uses 12 gauge shells. It is unmarked." + desc = "The AS-24 is a rugged looking automatic shotgun produced for the military by Gurov Projectile Weapons LLC. For very obvious reasons, it's illegal to own in many juristictions. Uses 12g rounds." icon_state = "ashot" item_state = null w_class = ITEMSIZE_LARGE @@ -276,7 +276,7 @@ /obj/item/weapon/gun/projectile/automatic/mini_uzi name = "\improper Uzi" - desc = "A lightweight, compact, fast firing gun, for when you want someone really dead. Uses .45 rounds." + desc = "The iconic Uzi is a lightweight, compact, fast firing machine pistol. Cybersun Industries famously still produces these designs, which have changed little since the 20th century. Uses .45 rounds." icon_state = "mini-uzi" w_class = ITEMSIZE_NORMAL load_method = MAGAZINE @@ -341,10 +341,10 @@ icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty" // update_held_icon() -/obj/item/weapon/gun/projectile/automatic/carbine // Admin abuse assault rifle. ToDo: Make this less shit. Maybe remove its autofire, and make it spawn with only 10 rounds at start. - name = "assault carbine" - desc = "The bullpup configured GP3000 is a lightweight, compact, military-grade assault rifle produced by Gurov Projectile Weapons LLC. It is sold almost exclusively to standing armies. The serial number on this one has been scratched off. Uses 5.45mm rounds." - icon_state = "bullpup" +/obj/item/weapon/gun/projectile/automatic/bullpup // Admin abuse assault rifle. ToDo: Make this less shit. Maybe remove its autofire, and make it spawn with only 10 rounds at start. + name = "bullpup rifle" + desc = "The bullpup configured GP3000 is a battle rifle produced by Gurov Projectile Weapons LLC. It is sold almost exclusively to standing armies. Uses 7.62mm rounds." + icon_state = "bullpup-small" item_state = "bullpup" w_class = ITEMSIZE_LARGE force = 10 @@ -352,21 +352,22 @@ origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m762m + magazine_type = /obj/item/ammo_magazine/m762 allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m) one_handed_penalty = 4 firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), - list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, burst_accuracy=list(0,-1,-2), dispersion=list(0.0, 0.6, 0.6)) + list(mode_name="2-round bursts", burst=2, fire_delay=null, move_delay=6, burst_accuracy=list(0,-1), dispersion=list(0.0, 0.6)) ) -/obj/item/weapon/gun/projectile/automatic/carbine/update_icon(var/ignore_inhands) +/obj/item/weapon/gun/projectile/automatic/bullpup/update_icon(var/ignore_inhands) ..() if(istype(ammo_magazine,/obj/item/ammo_magazine/m762)) - icon_state = "bullpup-small" // If using the smaller magazines, use the small mag sprite. + icon_state = "bullpup-small" + else if(istype(ammo_magazine,/obj/item/ammo_magazine/m762m)) + icon_state = "bullpup" else - icon_state = "bullpup-empty" - item_state = (ammo_magazine)? "bullpup" : "bullpup-empty" + item_state = "bullpup-empty" if(!ignore_inhands) update_held_icon() \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index bddbdfb741..75697bccb2 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -68,8 +68,8 @@ // Blade Runner pistol. /obj/item/weapon/gun/projectile/revolver/deckard - name = "Deckard .38" - desc = "A custom-built revolver, based off the semi-popular Detective Special model." + name = "\improper Deckard .38" + desc = "A custom-built revolver, based off the semi-popular Detective Special model. Uses .38-Special rounds." icon_state = "deckard-empty" caliber = ".38" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) @@ -105,7 +105,7 @@ /obj/item/weapon/gun/projectile/revolver/judge name = "\"The Judge\"" - desc = "A revolving hand-shotgun by Cybersun Industries that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12 shotgun rounds." + desc = "A revolving hand-shotgun by Cybersun Industries that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12g rounds." icon_state = "judge" caliber = "12g" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 4) @@ -118,7 +118,7 @@ /obj/item/weapon/gun/projectile/revolver/lemat name = "LeMat Revolver" - desc = "The LeMat Revolver is a 9 shot revolver with a secondary firing barrel loading shotgun shells. For when you really need something dead." + desc = "The LeMat Revolver is a 9 shot revolver with a secondary firing barrel loading shotgun shells. For when you really need something dead. Uses .38-Special and 12g rounds depending on the barrel." icon_state = "lemat" item_state = "revolver" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 2f4ba9d978..d2012b4c66 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -1,6 +1,6 @@ /obj/item/weapon/gun/projectile/shotgun/pump name = "shotgun" - desc = "The mass-produced W-T Remmington 29x shotgun is a favourite of police and security forces on many worlds. Useful for sweeping alleys." + desc = "The mass-produced W-T Remmington 29x shotgun is a favourite of police and security forces on many worlds. Uses 12g rounds." icon_state = "shotgun" item_state = "shotgun" max_shells = 4 @@ -43,7 +43,7 @@ /obj/item/weapon/gun/projectile/shotgun/pump/combat name = "combat shotgun" - desc = "Built for close quarters combat, the Hesphaistos Industries KS-40 is widely regarded as a weapon of choice for repelling boarders." + desc = "Built for close quarters combat, the Hesphaistos Industries KS-40 is widely regarded as a weapon of choice for repelling boarders. Uses 12g rounds." icon_state = "cshotgun" item_state = "cshotgun" origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) @@ -53,7 +53,7 @@ /obj/item/weapon/gun/projectile/shotgun/doublebarrel name = "double-barreled shotgun" - desc = "A true classic." + desc = "A truely classic weapon. No need to change what works. Uses 12g rounds." icon_state = "dshotgun" item_state = "dshotgun" //SPEEDLOADER because rapid unloading. @@ -80,7 +80,7 @@ /obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare name = "signal shotgun" - desc = "A double-barreled shotgun meant to fire signal flash shells." + desc = "A double-barreled shotgun meant to fire signal flash shells. Uses 12g rounds." ammo_type = /obj/item/ammo_casing/a12g/flash /obj/item/weapon/gun/projectile/shotgun/doublebarrel/unload_ammo(user, allow_dump) @@ -112,7 +112,7 @@ /obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn name = "sawn-off shotgun" - desc = "Omar's coming!" + desc = "Omar's coming!" // I'm not gonna add "Uses 12g rounds." to this one. I'll just let this reference go undisturbed. icon_state = "sawnshotgun" item_state = "sawnshotgun" slot_flags = SLOT_BELT|SLOT_HOLSTER diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 9a16f68a4c..183de3cf17 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -4,8 +4,7 @@ name = "anti-materiel rifle" desc = "A portable anti-armour rifle fitted with a scope, the HI PTR-7 Rifle was originally designed to used against armoured exosuits. It is capable of punching through windows and non-reinforced walls with ease. Fires armor piercing 14.5mm shells." icon_state = "heavysniper" - item_state = "l6closed-empty" // placeholder - item_state_slots = list(slot_r_hand_str = "heavysniper", slot_l_hand_str = "heavysniper") + item_state_slots = list(slot_r_hand_str = "l6closed-empty", slot_l_hand_str = "l6closed-empty") // placeholder w_class = ITEMSIZE_HUGE // So it can't fit in a backpack. force = 10 slot_flags = SLOT_BACK @@ -69,17 +68,15 @@ ////////////// Dragunov Sniper Rifle ////////////// -/* // Commented out until it's not worthless. Also might be nice to have a new icon that looks more sci-fi Dragunov-ish. /obj/item/weapon/gun/projectile/SVD name = "\improper Dragunov" - desc = "The SVD, also known as the Dragunov, was mass produced with an Optical Sniper Sight so simple that even Ivan can figure out how it works. Too bad for you that it's written in Russian. Uses 7.62mm rounds." + desc = "The SVD, also known as the Dragunov, is mass produced with an Optical Sniper Sight so simple that even Ivan can use it. Too bad for you that the inscriptions are written in Russian. Uses 7.62mm rounds." icon_state = "SVD" item_state = "SVD" w_class = ITEMSIZE_HUGE // So it can't fit in a backpack. force = 10 slot_flags = SLOT_BACK // Needs a sprite. origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) - recoil = 2 //extra kickback caliber = "7.62mm" load_method = MAGAZINE accuracy = -3 //shooting at the hip @@ -87,13 +84,11 @@ // requires_two_hands = 1 one_handed_penalty = 4 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand. fire_sound = 'sound/weapons/SVD_shot.ogg' - magazine_type = /obj/item/ammo_magazine/SVD - allowed_magazines = list(/obj/item/ammo_magazine/SVD, /obj/item/ammo_magazine/m762) + magazine_type = /obj/item/ammo_magazine/m762svd + allowed_magazines = list(/obj/item/ammo_magazine/m762svd) /obj/item/weapon/gun/projectile/SVD/update_icon() ..() -// if(istype(ammo_magazine,/obj/item/ammo_magazine/m762) -// icon_state = "SVD-bigmag" //No icon for this exists yet. if(ammo_magazine) icon_state = "SVD" else @@ -104,4 +99,4 @@ set name = "Use Scope" set popup_menu = 1 - toggle_scope(2.0)*/ \ No newline at end of file + toggle_scope(2.0) \ No newline at end of file diff --git a/code/modules/random_map/drop/drop_types.dm b/code/modules/random_map/drop/drop_types.dm index 722aeec09e..f66198e095 100644 --- a/code/modules/random_map/drop/drop_types.dm +++ b/code/modules/random_map/drop/drop_types.dm @@ -82,7 +82,7 @@ var/global/list/datum/supply_drop_loot/supply_drop /obj/item/weapon/storage/belt/security/tactical/bandolier, /obj/item/clothing/accessory/storage/black_drop_pouches, /obj/item/weapon/storage/backpack/dufflebag/sec, - /obj/item/weapon/gun/projectile/automatic/carbine, + /obj/item/weapon/gun/projectile/automatic/bullpup, /obj/item/ammo_magazine/m762/ap, /obj/item/ammo_magazine/m762, /obj/item/weapon/shield/energy, diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index ccf7c62ac1..9c74752b16 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -362,6 +362,17 @@ src.updateUsrDialog() return 0 + if(istype(O,/obj/item/weapon/gripper)) + var/obj/item/weapon/gripper/B = O //B, for Borg. + if(!B.wrapped) + user << "\The [B] is not holding anything." + return 0 + else + var/B_held = B.wrapped + user << "You use \the [B] to load \the [src] with \the [B_held]." + + return 0 + if(!sheet_reagents[O.type] && (!O.reagents || !O.reagents.total_volume)) user << "\The [O] is not suitable for blending." return 1 diff --git a/code/modules/reagents/reagent_containers/food/snacks_vr.dm b/code/modules/reagents/reagent_containers/food/snacks_vr.dm index f95331c86b..721b9742c9 100644 --- a/code/modules/reagents/reagent_containers/food/snacks_vr.dm +++ b/code/modules/reagents/reagent_containers/food/snacks_vr.dm @@ -189,3 +189,35 @@ ..() reagents.add_reagent("protein", 4) bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/sobakacube + name = "sobaka cube" + monkey_type = "Sobaka" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/sobakacube + name = "sobaka cube" + monkey_type = "Sobaka" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/sarucube + name = "saru cube" + monkey_type = "Saru" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/sarucube + name = "saru cube" + monkey_type = "Saru" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/sparracube + name = "sparra cube" + monkey_type = "Sparra" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/sparracube + name = "sparra cube" + monkey_type = "Sparra" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wolpincube + name = "wolpin cube" + monkey_type = "Wolpin" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/wolpincube + name = "wolpin cube" + monkey_type = "Wolpin" diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index fd75b22eaf..2588da8454 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1604,7 +1604,7 @@ CIRCUITS BELOW build_path = /obj/item/device/integrated_circuit_printer sort_string = "VCAAG" -/datum/design/item/custom_circuit_printer +/datum/design/item/custom_circuit_printer_upgrade name = "Integrated circuit printer upgrade - advanced designs" desc = "Allows the integrated circuit printer to create advanced circuits" id = "ic_printer_upgrade_adv" diff --git a/code/modules/research/prosfab_designs.dm b/code/modules/research/prosfab_designs.dm index 24f4d4239e..de1e307386 100644 --- a/code/modules/research/prosfab_designs.dm +++ b/code/modules/research/prosfab_designs.dm @@ -302,7 +302,7 @@ build_path = /obj/item/borg/upgrade/jetpack /datum/design/item/prosfab/robot_upgrade/syndicate - name = "Illegal upgrade" + name = "Scrambled equipment module" desc = "Allows for the construction of lethal upgrades for cyborgs." id = "borg_syndicate_module" req_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 3) diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 50f60ba9e1..dcb07cb988 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -42,16 +42,30 @@ if(!istype(docking_controller)) world << "warning: shuttle with docking tag [docking_controller_tag] could not find it's controller!" +// Return false to abort a jump, before the 'warmup' phase. +/datum/shuttle/proc/pre_warmup_checks() + return TRUE + +// Ditto, but for afterwards. +/datum/shuttle/proc/post_warmup_checks() + return TRUE + /datum/shuttle/proc/short_jump(var/area/origin,var/area/destination) if(moving_status != SHUTTLE_IDLE) return + if(!pre_warmup_checks()) + return + moving_status = SHUTTLE_WARMUP spawn(warmup_time*10) make_sounds(origin, HYPERSPACE_WARMUP) sleep(5 SECONDS) // so the sound finishes. + if(!post_warmup_checks()) + moving_status = SHUTTLE_IDLE + if (moving_status == SHUTTLE_IDLE) make_sounds(origin, HYPERSPACE_END) return //someone cancelled the launch @@ -66,6 +80,9 @@ if(moving_status != SHUTTLE_IDLE) return + if(!pre_warmup_checks()) + return + //it would be cool to play a sound here moving_status = SHUTTLE_WARMUP spawn(warmup_time*10) @@ -73,6 +90,9 @@ make_sounds(departing, HYPERSPACE_WARMUP) sleep(5 SECONDS) // so the sound finishes. + if(!post_warmup_checks()) + moving_status = SHUTTLE_IDLE + if (moving_status == SHUTTLE_IDLE) make_sounds(departing, HYPERSPACE_END) return //someone cancelled the launch diff --git a/code/modules/shuttles/shuttle_arrivals.dm b/code/modules/shuttles/shuttle_arrivals.dm new file mode 100644 index 0000000000..7b8a6026c8 --- /dev/null +++ b/code/modules/shuttles/shuttle_arrivals.dm @@ -0,0 +1,69 @@ +// The new arrivals shuttle. +/datum/shuttle/ferry/arrivals + name = "Arrivals" + location = 1 + warmup_time = 25 // Warmup takes 5 seconds, so 30 total. + always_process = TRUE + var/launch_delay = 3 + + area_offsite = /area/shuttle/arrival/pre_game // not really 'pre game' but this area is already defined and unused + area_station = /area/shuttle/arrival/station + docking_controller_tag = "arrivals_shuttle" + dock_target_station = "arrivals_dock" + +// For debugging. +/obj/machinery/computer/shuttle_control/arrivals + name = "shuttle control console" + req_access = list(access_cent_general) + shuttle_tag = "Arrivals" + +// Unlike most shuttles, the arrivals shuttle is completely automated, so we need to put some additional code here. + + +// This proc checks if anyone is on the shuttle. +/datum/shuttle/ferry/arrivals/proc/check_for_passengers(area/A) + for(var/mob/living/L in A) + return TRUE + return FALSE + +// This is to stop the shuttle if someone tries to stow away when its leaving. +/datum/shuttle/ferry/arrivals/post_warmup_checks() + if(!location) // If we're at station. + if(check_for_passengers(area_station)) + return FALSE + return TRUE + +/datum/shuttle/ferry/arrivals/process() + if(process_state == IDLE_STATE) + + if(location) // If we're off-station (space). + if(check_for_passengers(area_offsite)) // No point arriving with an empty shuttle. + warmup_time = initial(warmup_time) + launch() + message_passengers(area_offsite, "Arriving at [using_map.station_name] in thirty seconds...") + spawn(10 SECONDS) + message_passengers(area_offsite, "Arriving at [using_map.station_name] in twenty seconds.") + spawn(10 SECONDS) + message_passengers(area_offsite, "Arriving at [using_map.station_name] in ten seconds. Please buckle up.") + + else // We are at the station. + if(!check_for_passengers(area_station)) // Don't leave with anyone. + if(launch_delay) // Give some time to get on the docks so people don't get trapped inbetween the dock airlocks. + launch_delay-- + else + launch_delay = initial(launch_delay) + warmup_time = 0 // Gotta go fast. + launch() + + ..() // Do everything else + +/datum/shuttle/ferry/arrivals/proc/message_passengers(area/A, var/message) + for(var/mob/M in A) + to_chat(M, message) + +/* +/datum/shuttle/ferry/arrivals/current_dock_target() + if(location) // If we're off station. + return null // Nothing to dock to in space. + return ..() +*/ \ No newline at end of file diff --git a/code/modules/shuttles/shuttle_ferry.dm b/code/modules/shuttles/shuttle_ferry.dm index d076357735..c122da96f1 100644 --- a/code/modules/shuttles/shuttle_ferry.dm +++ b/code/modules/shuttles/shuttle_ferry.dm @@ -4,6 +4,7 @@ var/location = 0 //0 = at area_station, 1 = at area_offsite var/direction = 0 //0 = going to station, 1 = going to offsite. var/process_state = IDLE_STATE + var/always_process = FALSE var/in_use = null //tells the controller whether this shuttle needs processing diff --git a/code/modules/turbolift/turbolift_door_vr.dm b/code/modules/turbolift/turbolift_door_vr.dm new file mode 100644 index 0000000000..299140c4a2 --- /dev/null +++ b/code/modules/turbolift/turbolift_door_vr.dm @@ -0,0 +1,5 @@ +// Vore specific code for /obj/machinery/door/airlock/lift + +/obj/machinery/door/airlock/lift/emag_act(var/uses_left, var/mob/user) + user << "This door is internally controlled." + return 0 // Prevents the cryptographic sequencer from using a charge fruitlessly diff --git a/code/modules/vore/eating/belly_vr.dm b/code/modules/vore/eating/belly_vr.dm index 96269c8318..edd138b0eb 100644 --- a/code/modules/vore/eating/belly_vr.dm +++ b/code/modules/vore/eating/belly_vr.dm @@ -522,7 +522,7 @@ to_chat(owner, "[M] tastes of [M.get_taste_message(0)].") if(!silent) for(var/mob/hearer in range(1,owner)) - hearer << sound('sound/vore/squish2.ogg',volume=80) + hearer << sound(target.vore_sound,volume=80) owner.updateVRPanel() for(var/mob/living/M in internal_contents) M.updateVRPanel() diff --git a/code/modules/vore/eating/simple_animal_vr.dm b/code/modules/vore/eating/simple_animal_vr.dm index 72c131f613..22ea12441c 100644 --- a/code/modules/vore/eating/simple_animal_vr.dm +++ b/code/modules/vore/eating/simple_animal_vr.dm @@ -43,3 +43,35 @@ var/confirm = alert(user, "This mob is currently set to digest all stomach contents. Do you want to disable this?", "Disabling [name]'s Digestion", "Disable", "Cancel") if(confirm == "Disable") B.digest_mode = "Hold" + +/mob/living/simple_animal/proc/away_from_players() + //Reduces the amount of logging spam by only allowing procs to continue if they have a player nearby to listen. + //A return of 0 means that it is not away from players. + // This is a stripped down version of the proc get_mobs_and_objs_in_view_fast() + var/turf/T = get_turf(src) + if(!T) return 1 // If the turf doesn't exist, we don't want the proc running regardless + + // Quickly grabs the mob's hearing range to check from + var/list/hear = dview(world.view,T,INVISIBILITY_MAXIMUM) + var/list/hearturfs = list() + for(var/thing in hear) + if(istype(thing,/mob)) + hearturfs += get_turf(thing) + + //Check each player to see if they're inside said 'hearing range' turfs + for(var/mob in player_list) + if(!istype(mob, /mob)) + crash_with("There is a null or non-mob reference inside player_list.") + continue + if(get_turf(mob) in hearturfs) + return 0 + return 1 + + +mob/living/simple_animal/custom_emote() + if (away_from_players()) return + . = ..() + +mob/living/simple_animal/say() + if (away_from_players()) return + . = ..() diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm index c3c99fedd8..9cc9199061 100644 --- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm @@ -37,7 +37,7 @@ /obj/item/clothing/suit/storage/det_suit/fluff/tasald, /obj/item/clothing/suit/storage/det_suit/fluff/tas_coat, /obj/item/clothing/under/det/fluff/tasald, - /obj/item/fluff/permit/tasald_corlethian, + /obj/item/weapon/permit/gun/fluff/tasald_corlethian, /obj/item/weapon/gun/projectile/revolver/mateba/fluff/tasald_corlethian, /obj/item/weapon/implanter/loyalty) @@ -94,7 +94,7 @@ new /obj/item/weapon/card/id/centcom/fluff/joanbadge(src) new /obj/item/weapon/gun/energy/gun/fluff/dominator(src) new /obj/item/clothing/suit/armor/det_suit(src) - new /obj/item/fluff/permit/joanrisu(src) + new /obj/item/weapon/permit/gun/fluff/joanrisu(src) new /obj/item/weapon/sword/fluff/joanaria(src) new /obj/item/weapon/flame/lighter/zippo/fluff/joan(src) new /obj/item/clothing/under/rank/internalaffairs/fluff/joan(src) @@ -125,9 +125,7 @@ //Razerwing:Archer Maximus /obj/item/weapon/storage/box/fluff/archermaximus desc = "Personal Effects" - has_items = list( - /obj/item/fluff/permit/archermaximus, - /obj/item/weapon/gun/projectile/colt/fluff/archercolt) + has_items = list() //ivymoomoo:Ivy Baladeva /obj/item/weapon/storage/backpack/messenger/sec/fluff/ivymoomoo @@ -164,7 +162,7 @@ ..() //Might look like a lot... but all small items. //Centcom stuff and permit new /obj/item/weapon/card/id/centcom/fluff/aronai(src) - new /obj/item/fluff/permit/aronai_kadigan(src) + new /obj/item/weapon/permit/gun/fluff/aronai_kadigan(src) //Gun and holster new /obj/item/weapon/gun/projectile/nsfw(src) new /obj/item/ammo_magazine/nsfw_mag(src) @@ -180,19 +178,19 @@ /obj/item/weapon/gun/projectile/pistol, /obj/item/ammo_magazine/m9mm/flash, /obj/item/ammo_magazine/m9mm/flash, - /obj/item/fluff/permit/sebastian_aji) + /obj/item/weapon/permit/gun/fluff/sebastian_aji) /obj/item/weapon/storage/box/fluff/briana_moore name = "Briana's Derringer Box" has_items = list( /obj/item/weapon/gun/projectile/derringer/fluff/briana, - /obj/item/fluff/permit/briana_moore) + /obj/item/weapon/permit/gun/fluff/briana_moore) //SilencedMP5A5:Serdykov Antoz /obj/item/weapon/storage/box/fluff/serdykov_antoz name = "Serdy's Weapon Box" has_items = list( - /obj/item/fluff/permit/silencedmp5a5, + /obj/item/weapon/permit/gun/fluff/silencedmp5a5, /obj/item/weapon/gun/projectile/revolver/detective/fluff/serdy) @@ -242,3 +240,40 @@ Swimsuits, for general use, to avoid arriving to work with your swimsuit. /obj/item/weapon/storage/box/fluff/swimsuit/medical name = "Medical Swimsuit capsule" has_items = list(/obj/item/clothing/under/swimsuit/fluff/medical) + +//Monkey boxes for the new primals we have +/obj/item/weapon/storage/box/monkeycubes/sobakacubes + name = "sobaka cube box" + desc = "Drymate brand sobaka cubes. Just add water!" + +/obj/item/weapon/storage/box/monkeycubes/sobakacubes/New() + ..() + for(var/i = 1 to 4) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/sobakacube(src) + +/obj/item/weapon/storage/box/monkeycubes/sarucubes + name = "saru cube box" + desc = "Drymate brand saru cubes. Just add water!" + +/obj/item/weapon/storage/box/monkeycubes/sarucubes/New() + ..() + for(var/i = 1 to 4) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/sarucube(src) + +/obj/item/weapon/storage/box/monkeycubes/sparracubes + name = "sparra cube box" + desc = "Drymate brand sparra cubes. Just add water!" + +/obj/item/weapon/storage/box/monkeycubes/sparracubes/New() + ..() + for(var/i = 1 to 4) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/sparracube(src) + +/obj/item/weapon/storage/box/monkeycubes/wolpincubes + name = "wolpin cube box" + desc = "Drymate brand wolpin cubes. Just add water!" + +/obj/item/weapon/storage/box/monkeycubes/wolpincubes/New() + ..() + for(var/i = 1 to 4) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/wolpincube(src) diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 9fa90029aa..d06cbba393 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -1394,280 +1394,6 @@ Departamental Swimsuits, for general use icon_state = "alfonso_visor" icon_override = 'icons/vore/custom_onmob_vr.dmi' -//For general use if general means teshari players only - -/obj/item/clothing/under/seromi/undercoat - desc = "A Teshari traditional garb, with a modern twist! Made of micro and nanofibres to make it light and billowy, perfect for going fast and stylishly!" - icon = 'icons/mob/species/seromi/tesh_uniform_vr.dmi' - icon_override = 'icons/mob/species/seromi/tesh_uniform_vr.dmi' - icon_state = "tesh_uniform_bo" - item_state = "tesh_uniform_bo" - body_parts_covered = UPPER_TORSO|LOWER_TORSO - - -/obj/item/clothing/under/seromi/undercoat/black_orange - name = "black and orange undercoat" - icon_state = "tesh_uniform_bo" - item_state = "tesh_uniform_bo" - -/obj/item/clothing/under/seromi/undercoat/black_grey - name = "black and grey undercoat" - icon_state = "tesh_uniform_bg" - item_state = "tesh_uniform_bg" - -/obj/item/clothing/under/seromi/undercoat/black_midgrey - name = "black and medium grey undercoat" - icon_state = "tesh_uniform_bmg" - item_state = "tesh_uniform_bmg" - -/obj/item/clothing/under/seromi/undercoat/black_lightgrey - name = "black and light grey undercoat" - icon_state = "tesh_uniform_blg" - item_state = "tesh_uniform_blg" - -/obj/item/clothing/under/seromi/undercoat/black_white - name = "black and white undercoat" - icon_state = "tesh_uniform_bw" - item_state = "tesh_uniform_bw" - -/obj/item/clothing/under/seromi/undercoat/black_red - name = "black and red undercoat" - icon_state = "tesh_uniform_br" - item_state = "tesh_uniform_br" - -/obj/item/clothing/under/seromi/undercoat/black - name = "black undercoat" - icon_state = "tesh_uniform_bn" - item_state = "tesh_uniform_bn" - -/obj/item/clothing/under/seromi/undercoat/black_yellow - name = "black and yellow undercoat" - icon_state = "tesh_uniform_by" - item_state = "tesh_uniform_by" - -/obj/item/clothing/under/seromi/undercoat/black_green - name = "black and Green undercoat" - icon_state = "tesh_uniform_bgr" - item_state = "tesh_uniform_bgr" - -/obj/item/clothing/under/seromi/undercoat/black_blue - name = "black and blue undercoat" - icon_state = "tesh_uniform_bbl" - item_state = "tesh_uniform_bbl" - -/obj/item/clothing/under/seromi/undercoat/black_purple - name = "black and purple undercoat" - icon_state = "tesh_uniform_bp" - item_state = "tesh_uniform_bp" - -/obj/item/clothing/under/seromi/undercoat/black_pink - name = "black and pink undercoat" - icon_state = "tesh_uniform_bpi" - item_state = "tesh_uniform_bpi" - -/obj/item/clothing/under/seromi/undercoat/black_brown - name = "black and brown undercoat" - icon_state = "tesh_uniform_bbr" - item_state = "tesh_uniform_bbr" - -/obj/item/clothing/under/seromi/undercoat/orange_grey - name = "orange and grey undercoat" - icon_state = "tesh_uniform_og" - item_state = "tesh_uniform_og" - -/obj/item/clothing/under/seromi/undercoat/rainbow - name = "rainbow undercoat" - icon_state = "tesh_uniform_rainbow" - item_state = "tesh_uniform_rainbow" - -/obj/item/clothing/under/seromi/undercoat/lightgrey_grey - name = "light grey and grey undercoat" - icon_state = "tesh_uniform_lgg" - item_state = "tesh_uniform_lgg" - -/obj/item/clothing/under/seromi/undercoat/white_grey - name = "white and grey undercoat" - icon_state = "tesh_uniform_wg" - item_state = "tesh_uniform_wg" - -/obj/item/clothing/under/seromi/undercoat/red_grey - name = "red and grey undercoat" - icon_state = "tesh_uniform_rg" - item_state = "tesh_uniform_rg" - -/obj/item/clothing/under/seromi/undercoat/orange - name = "orange undercoat" - icon_state = "tesh_uniform_on" - item_state = "tesh_uniform_on" - -/obj/item/clothing/under/seromi/undercoat/yellow_grey - name = "yellow and grey undercoat" - icon_state = "tesh_uniform_yg" - item_state = "tesh_uniform_yg" - -/obj/item/clothing/under/seromi/undercoat/green_grey - name = "green and grey undercoat" - icon_state = "tesh_uniform_gg" - item_state = "tesh_uniform_gg" - -/obj/item/clothing/under/seromi/undercoat/blue_grey - name = "blue and grey undercoat" - icon_state = "tesh_uniform_blg" - item_state = "tesh_uniform_blg" - -/obj/item/clothing/under/seromi/undercoat/purple_grey - name = "purple and grey undercoat" - icon_state = "tesh_uniform_pg" - item_state = "tesh_uniform_pg" - -/obj/item/clothing/under/seromi/undercoat/pink_grey - name = "black and orange undercoat" - icon_state = "tesh_uniform_pig" - item_state = "tesh_uniform_pig" - -/obj/item/clothing/under/seromi/undercoat/brown_grey - name = "purple and grey undercoat" - icon_state = "tesh_uniform_brg" - item_state = "tesh_uniform_brg" - - -//now to do the cloaks - -/obj/item/clothing/suit/storage/seromi/cloak - name = "black and orange cloak " - desc = "It drapes over a Teshari's shoulders and closes at the neck with pockets convienently placed inside." - icon = 'icons/mob/species/seromi/tesh_cloak_vr.dmi' - icon_override = 'icons/mob/species/seromi/tesh_cloak_vr.dmi' - icon_state = "tesh_cloak_bo" - item_state = "tesh_cloak_bo" - species_restricted = list("Teshari") - body_parts_covered = UPPER_TORSO|ARMS - -/obj/item/clothing/suit/storage/seromi/cloak/black_orange - name = "black and orange cloak" - icon_state = "tesh_cloak_bo" - item_state = "tesh_cloak_bo" - -/obj/item/clothing/suit/storage/seromi/cloak/black_grey - name = "black and grey cloak" - icon_state = "tesh_cloak_bg" - item_state = "tesh_cloak_bg" - -/obj/item/clothing/suit/storage/seromi/cloak/black_midgrey - name = "black and medium grey cloak" - icon_state = "tesh_cloak_bmg" - item_state = "tesh_cloak_bmg" - -/obj/item/clothing/suit/storage/seromi/cloak/black_lightgrey - name = "black and light grey cloak" - icon_state = "tesh_cloak_blg" - item_state = "tesh_cloak_blg" - -/obj/item/clothing/suit/storage/seromi/cloak/black_white - name = "black and white cloak" - icon_state = "tesh_cloak_bw" - item_state = "tesh_cloak_bw" - -/obj/item/clothing/suit/storage/seromi/cloak/black_red - name = "black and red cloak" - icon_state = "tesh_cloak_br" - item_state = "tesh_cloak_br" - -/obj/item/clothing/suit/storage/seromi/cloak/black - name = "black cloak" - icon_state = "tesh_cloak_bn" - item_state = "tesh_cloak_bn" - -/obj/item/clothing/suit/storage/seromi/cloak/black_yellow - name = "black and yellow cloak" - icon_state = "tesh_cloak_by" - item_state = "tesh_cloak_by" - -/obj/item/clothing/suit/storage/seromi/cloak/black_green - name = "black and Green cloak" - icon_state = "tesh_cloak_bgr" - item_state = "tesh_cloak_bgr" - -/obj/item/clothing/suit/storage/seromi/cloak/black_blue - name = "black and blue cloak" - icon_state = "tesh_cloak_bbl" - item_state = "tesh_cloak_bbl" - -/obj/item/clothing/suit/storage/seromi/cloak/black_purple - name = "black and purple cloak" - icon_state = "tesh_cloak_bp" - item_state = "tesh_cloak_bp" - -/obj/item/clothing/suit/storage/seromi/cloak/black_pink - name = "black and pink cloak" - icon_state = "tesh_cloak_bpi" - item_state = "tesh_cloak_bpi" - -/obj/item/clothing/suit/storage/seromi/cloak/black_brown - name = "black and brown cloak" - icon_state = "tesh_cloak_bbr" - item_state = "tesh_cloak_bbr" - -/obj/item/clothing/suit/storage/seromi/cloak/orange_grey - name = "orange and grey cloak" - icon_state = "tesh_cloak_og" - item_state = "tesh_cloak_og" - -/obj/item/clothing/suit/storage/seromi/cloak/rainbow - name = "rainbow cloak" - icon_state = "tesh_cloak_rainbow" - item_state = "tesh_cloak_rainbow" - -/obj/item/clothing/suit/storage/seromi/cloak/lightgrey_grey - name = "light grey and grey cloak" - icon_state = "tesh_cloak_lgg" - item_state = "tesh_cloak_lgg" - -/obj/item/clothing/suit/storage/seromi/cloak/white_grey - name = "white and grey cloak" - icon_state = "tesh_cloak_wg" - item_state = "tesh_cloak_wg" - -/obj/item/clothing/suit/storage/seromi/cloak/red_grey - name = "red and grey cloak" - icon_state = "tesh_cloak_rg" - item_state = "tesh_cloak_rg" - -/obj/item/clothing/suit/storage/seromi/cloak/orange - name = "orange cloak" - icon_state = "tesh_cloak_on" - item_state = "tesh_cloak_on" - -/obj/item/clothing/suit/storage/seromi/cloak/yellow_grey - name = "yellow and grey cloak" - icon_state = "tesh_cloak_yg" - item_state = "tesh_cloak_yg" - -/obj/item/clothing/suit/storage/seromi/cloak/green_grey - name = "green and grey cloak" - icon_state = "tesh_cloak_gg" - item_state = "tesh_cloak_gg" - -/obj/item/clothing/suit/storage/seromi/cloak/blue_grey - name = "blue and grey cloak" - icon_state = "tesh_cloak_blg" - item_state = "tesh_cloak_blg" - -/obj/item/clothing/suit/storage/seromi/cloak/purple_grey - name = "purple and grey cloak" - icon_state = "tesh_cloak_pg" - item_state = "tesh_cloak_pg" - -/obj/item/clothing/suit/storage/seromi/cloak/pink_grey - name = "black and orange cloak" - icon_state = "tesh_cloak_pig" - item_state = "tesh_cloak_pig" - -/obj/item/clothing/suit/storage/seromi/cloak/brown_grey - name = "purple and grey cloak" - icon_state = "tesh_cloak_brg" - item_state = "tesh_cloak_brg" - //Jackets For General Use. Sprited by Joji. /obj/item/clothing/suit/storage/fluff/jacket //Not the toggle version since it uses custom toggle code to update the on-mob icon. name = "Field Jacket" diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 09a24d82f2..9fd364862d 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -1351,4 +1351,23 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie access = list(access_cent_general,access_cent_thunder,access_cent_medical,access_cent_living,access_cent_storage,access_cent_teleporter,access_research,access_xenobiology,access_maint_tunnels,access_xenoarch,access_robotics,access_tox_storage,access_tox) //Yes, this looks awful. I tried calling both central and resarch access but it didn't work. age = 39 blood_type = "O-" - sex = "Female" \ No newline at end of file + sex = "Female" +/obj/item/weapon/fluff/kitchi_injector + name = "Kitchi Monkey Injector" + desc = "Allows the user (Kitchi) to transform into a monkey. Single use." + icon = 'icons/obj/items.dmi' + icon_state = "dnainjector" + +/obj/item/weapon/fluff/kitchi_injector/attack(mob/living/M, mob/living/user) + + if(M.ckey != "Ketrai") + user << "Something compels you to not use this injector." + return + + if(usr == M) //Is the person using it on theirself? + if(ishuman(M)) //If so, monkify them. + var/mob/living/carbon/human/H = user + H.monkeyize() + qdel(src) //One time use. + else //If not, do nothing. + to_chat(user," You are unable to inject other people.") diff --git a/code/modules/vore/fluffstuff/custom_permits_vr.dm b/code/modules/vore/fluffstuff/custom_permits_vr.dm index 6b8ac5d81a..3b97cb53ff 100644 --- a/code/modules/vore/fluffstuff/custom_permits_vr.dm +++ b/code/modules/vore/fluffstuff/custom_permits_vr.dm @@ -1,19 +1,64 @@ -// BEGIN - DO NOT EDIT PROTOTYPE -/obj/item/fluff/permit +/obj/item/weapon/permit/gun/fluff + owner = 1 // These permits already have owners. + desc = "A card indicating that the owner is allowed to carry a firearm/sidearm. It is issued by CentCom, so it is valid until it expires. This one is just a sample, so it belongs to no one." + +/obj/item/weapon/permit/gun/fluff/emag_act(var/remaining_charges, var/mob/user) + to_chat(user, "You cannot reset the naming locks on [src]. It's issued by CentCom and totally tamper-proof!") + return + +// bwoincognito:Tasald Corlethian +/obj/item/weapon/permit/gun/fluff/tasald_corlethian + name = "Tasald Ajax Corlethian's Sidearm Permit" + desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on August 2nd, 2562." + +// arokha:Aronai Kadigan +/obj/item/weapon/permit/gun/fluff/aronai_kadigan + name = "Aronai Kadigan's Sidearm Permit" + desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on February 16th, 2562." + +// joanrisu:Joan Risu +/obj/item/weapon/permit/gun/fluff/joanrisu + name = "Joan Risu's Sidearm Permit" + desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on April 4th, 2562." + +// dhaeleena:Dhaeleena M'iar +/obj/item/weapon/permit/gun/fluff/dhaeleena_miar + name = "Dhaeleena M'iar's Sidearm Permit" + desc = "A card indicating that the owner is allowed to carry a sidearm that uses less-than-lethal munitions. It is issued by CentCom, so it is valid until it expires on March 1st, 2562." + +// aerowing:Sebastian Aji +/obj/item/weapon/permit/gun/fluff/sebastian_aji + name = "Sebastian Aji's Sidearm Permit" + desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on April 17th, 2562." + +// luminescent_ring:Briana Moore +/obj/item/weapon/permit/gun/fluff/briana_moore + name = "Briana Moore's Sidearm Permit" + desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on April 24th, 2562." + +// silenedmp5a5:Serdykov Antoz +/obj/item/weapon/permit/gun/fluff/silencedmp5a5 + name = "Serdykov Antoz's Sidearm Permit" + desc = "A card indicating that the owner is allowed to carry a sidearm that uses less-than-lethal munitions. It is issued by CentCom, so it is valid until it expires on April 24th, 2562." + +/* Legacy Permits +// BEGIN - PROTOTYPE +/obj/item/weapon/permit/gun/fluff name = "Sample Permit" desc = {"There is a bright red SAMPLE PERMIT stamped across the stock photo displayed on the card. Obviously this is only an example to educate security. NAME: First Last | RACE: Human | HOMEWORLD: Moon (if applicable), Planet, System DOB: DD/Mon/YYYY | HEIGHT: XXcm | SEX: Female - The individual named above is licensed by the Nanotrasen Department of Civil Protection to ___________________. + The individual named above is licensed by the Nanotrasen Department of Civil Protection to ______. This license expires on DD/Month/YYYY and must be renewed by CentCom prior to this date."} icon = 'icons/obj/card.dmi' icon_state = "guest" w_class = ITEMSIZE_TINY -// END - DO NOT EDIT PROTOTYPE +// END - PROTOTYPE +*/ -/* TEMPLATE -/obj/item/fluff/permit/charactername +/* OLD TEMPLATE +/obj/item/weapon/permit/gun/fluff/charactername name = "Name's Thing Permit" desc = {" NAME: Firstname Lastname | RACE: Human | HOMEWORLD: Earth, Sol @@ -22,146 +67,3 @@ The individual named above is licensed by the Nanotrasen Department of Civil Protection to openly carry XYZ. CONDITIONS. This license expires on DD/Mon/YYYY and must be renewed by CentCom prior to this date."} */ - -/* -// jertheace:Jeremiah 'Ace' Acacius -/obj/item/fluff/permit/jerace - name = "Ace's Shotgun Permit" - desc = {" - NAME: Jeremiah Acacius | RACE: Human | HOMEWORLD: Earth, Sol - DOB: 17/Jun/2532 | HEIGHT: 178cm | SEX: Male - - The individual named above is licensed by the Nanotrasen Department of Civil Protection to openly carry one M45D shotgun loaded with less-than-lethal munitions as a head of staff. Else this weapon is to be turned in to security for holding until the end of the shift. - This license expires on 01/Jun/2560 and must be renewed by CentCom prior to this date."} -*/ - -/* -// sasoperative:Joseph Skinner -/obj/item/fluff/permit/josephskinner - name = "Joseph Skinner's 12g Revolver Permit" - desc = {" - NAME: Joseph Cyrus Skinner | RACE: Human | HOMEWORLD: Earth, Sol - DOB: 10/Jun/2532 | HEIGHT: 162.5cm | SEX: Male - - The individual named above is licensed by the Nanotrasen Department of Civil Protection to carry one 12 gauge revolver loaded with less-than-lethal munitions as a member of security or head of staff. Else this weapon is to be turned in to security for holding until the end of the shift. - This license expires on 29/Nov/2559 and must be renewed by CentCom prior to this date."} -*/ - -/* -// wankersonofjerkin:Ryan Winz -/obj/item/fluff/permit/ryanwinz - name = "Ryan Winz's Revolver Permit" - desc = {" - NAME: Ryan Winz | RACE: Human | HOMEWORLD: New Ekaterina, Moskva - DOB: 27/Oct/2536 | HEIGHT: 172cm | SEX: Male - - The individual named above is licensed by the Nanotrasen Department of Civil Protection to openly carry one Colt Single-Action Army revolver as a security officer or head of staff. Else this weapon is to be turned in to security for holding until the end of the shift. - This license expires on 26/Dec/2559 and must be renewed by CentCom prior to this date."} -*/ - -// bwoincognito:Tasald Corlethian -/obj/item/fluff/permit/tasald_corlethian - name = "Tasald Ajax Corlethian's Sidearm Permit" - desc = {" - NAME: Tasald Ajax Corlethian | RACE: Vulpine | HOMEWORLD: Iscyn, Orta - DOB: 09/Sep/2529 | HEIGHT: 187cm | SEX: Male - - The individual named above is licensed by the Nanotrasen Department of Civil Protection to carry one .357 pistol. - This license expires on 2/August/2562 and must be renewed by CentCom prior to this date."} - -// arokha:Aronai Kadigan -/obj/item/fluff/permit/aronai_kadigan - name = "Aronai Kadigan's Sidearm Permit" - desc = {" - NAME: Aronai Kadigan | RACE: Cross Fox (Synth) | HOMEWORLD: Kitsuhana Prime - DOB: 12/Jul/2530 | HEIGHT: 188cm | SEX: Male - - The individual named above is licensed by the Nanotrasen Department of Civil Protection - to carry one KHI (foreign) personal defense weapon, non-lethal only. - This license expires on 16/Feb/2562 and must be renewed by CentCom prior to this date."} - -// joanrisu:Joan Risu -/obj/item/fluff/permit/joanrisu - name = "Joan Risu's Sidearm Permit" - desc = {" - NAME: Joan Risu | RACE: Squirrelkin | HOMEWORLD: Luna, Gaia, Koi - DOB: 16/Apr/2536 | HEIGHT: 161cm | SEX: Female - - The individual named above is licensed by the Nanotrasen Department of Civil Protection to carry one MWPSB Dominator. - This license expires on 04/Apr/2562 and must be renewed by CentCom prior to this date."} - -// molenar:Kari Akiren -/obj/item/fluff/permit/kari_akiren - name = "Kari Akiren's Rifle Permit" - desc = {" - NAME: Kari Akiren | RACE: Inkling | HOMEWORLD: Supesu - DOB: 26-Jun-2553 | HEIGHT: 163cm | SEX: Female - - The individual named above is licensed by the Nanotrasen Department of Civil Protection to carry one Clockwork Rifle (bolt-action variant). - This license expires on 14/Dec/2560 and must be renewed by CentCom prior to this date."} - -//eekasqueak: Serkii Miishy -/obj/item/fluff/permit/serkiimiishy - name = "Serkii Miishy's Stun Revolver Permit" - desc = {" - NAME: Serkii Miishy | RACE: Mousemorph | HOMEWORLD: Mars, Sol - DOB: 10/9/2441 | HEIGHT: 122cm | SEX: Male - - The individual named above is licensed by the Nanotrasen Department of Civil Protection to carry one stun revolver. - This license expires on 30/March/2561 and must be renewed by CentCom prior to this date."} - -//Razerwing:Archer Maximus -/obj/item/fluff/permit/archermaximus - name = "Archer Maximus's MEUSOC 45 Permit" - desc = {" - NAME: FArcher Maximus | RACE: Human | HOMEWORLD: Charybdis - DOB: 04/18/2521 | HEIGHT: 172.7cm | SEX: female - - The individual named above is licensed by the Nanotrasen Department of Civil Protection to openly carry a MEUSOC 45. CONDITIONS. - This license expires on 31/May/2561 and must be renewed by CentCom prior to this date."} - -// dhaeleena:Dhaeleena M'iar -/obj/item/fluff/permit/dhaeleena_miar - name = "Dhaeleena M'iar's Sidearm Permit" - desc = {" - NAME: Dhaeleena M'iar | RACE: Tajara | HOMEWORLD: Slyria - DOB: 15/Nov/2535 | HEIGHT: 210,3cm | SEX: Female - - The individual named above is licensed by the Nanotrasen Department of Civil Protection - to carry one Mateba Model 6 Unica handgun with stun/rubber/flash ammo. - This license expires on 01/Mar/2562 and must be renewed by CentCom prior to this date."} - -// aerowing:Sebastian Aji -/obj/item/fluff/permit/sebastian_aji - name = "Sebastian Aji's Sidearm Permit" - desc = {" - NAME: Sebastian Aji | RACE: Panthera Tigris | HOMEWORLD: Ahdomai, Siik'tajr - DOB: 19/Dec/2530 | HEIGHT: 198cm | SEX: Male - - The individual named above is licensed by the Nanotrasen Department of Civil Protection - to carry one Lumoco Arms P3 Whisper handgun with lethal/flash ammo. - This license expires on 17/Apr/2563 and must be renewed by CentCom prior to this date."} - -// luminescent_ring:Briana Moore -/obj/item/fluff/permit/briana_moore - name = "Briana Moore's Sidearm Permit" - desc = {" - NAME: Briana Moore | RACE: Angel | HOMEWORLD: Sanctum - DOB: 2538-07-11 | HEIGHT: 155cm | SEX: Female - - The individual named above is licensed by the Nanotrasen Department of Civil Protection - to carry one Derringer handgun with lethal ammo. - This license expires on 24/Apr/2563 and must be renewed by CentCom prior to this date."} - - - -// silenedmp5a5:Serdykov Antoz -/obj/item/fluff/permit/silencedmp5a5 - name = "Serdykov Antoz's Sidearm Permit" - desc = {" - NAME: Serdykov Antoz | RACE: German Shepherd | HOMEWORLD: N/A, Sol - DOB: 14/6/2516 | HEIGHT: 6'8" | SEX: Male - - The individual named above is licensed by the Nanotrasen Department of Civil Protection - to carry one Vintage S&W Model 10 revolver with stun/rubber ammo. - This license expires on 24/Apr/2563 and must be renewed by CentCom prior to this date."} diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt index 2616c79159..fa5739473b 100644 --- a/config/alienwhitelist.txt +++ b/config/alienwhitelist.txt @@ -1,29 +1,20 @@ some~user - Species -1r1s - Daemon -benemuel - Daemon -benemuel - Enochian bothnevarbackwards - Diona cameron653 - Xenomorph Hybrid hawkerthegreat - Vox jemli - Gutter -natje - Daemon natje - Xenochimera -pontifexminimus - Daemon -pontifexminimus - Enochian rikaru19xjenkins - Xenomorph Hybrid rikaru19xjenkins - Xenochimera rixunie - Diona rixunie - Gutter seiga - Vox -sepulchre - Daemon sepulchre - Vox sepulchre - Xenomorph Hybrid silverTalismen - Diona silvertalismen - Xenochimera -vorrarkul - Daemon -vorrarkul - Enochian xioen - Diona xioen - Xenomorph Hybrid -zalvine - Enochian zammyman215 - Vox zekesturm - Xenomorph Hybrid +aether_elemental - Daemon diff --git a/html/changelog.html b/html/changelog.html index e062e723b9..2debd89613 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,105 @@ -->
+

26 August 2017

+

Belsima updated:

+ +

MagmaRam updated:

+ + +

20 August 2017

+

Anewbe updated:

+ +

Atermonera updated:

+ +

Belsima updated:

+ +

Cirra updated:

+ +

Leshana updated:

+ +

LorenLuke updated:

+ +

MagmaRam updated:

+ +

Nalarac updated:

+ +

PrismaticGynoid updated:

+ +

Sarmie updated:

+ +

09 May 2017

Anewbe updated: