diff --git a/code/game/objects/items/storage/misc.dm b/code/game/objects/items/storage/misc.dm
index 2512eb99043..9ead1113f33 100644
--- a/code/game/objects/items/storage/misc.dm
+++ b/code/game/objects/items/storage/misc.dm
@@ -91,6 +91,9 @@
)
starts_with = list(/obj/item/pen/crayon/chalk, /obj/item/reagent_containers/pill/nutriment, /obj/item/gps/survival)
+/obj/item/storage/box/survival_knife/attack_self(mob/user)
+ return
+
/obj/item/storage/box/papersack
name = "paper sack"
desc = "A sack neatly crafted out of paper."
diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm
index 3ca43f4c30d..a95731c3213 100644
--- a/code/game/objects/items/weapons/swords_axes_etc.dm
+++ b/code/game/objects/items/weapons/swords_axes_etc.dm
@@ -46,6 +46,7 @@
desc = "A compact yet rebalanced personal defense weapon. Can be concealed when folded."
icon = 'icons/obj/weapons.dmi'
icon_state = "telebaton"
+ item_state = "telebaton"
slot_flags = SLOT_BELT
w_class = ITEMSIZE_SMALL
damage_force = 3
diff --git a/code/modules/donatorreskins/donatoruniform.dm b/code/modules/donatorreskins/donatoruniform.dm
index 26dde512c16..714b4b2319e 100644
--- a/code/modules/donatorreskins/donatoruniform.dm
+++ b/code/modules/donatorreskins/donatoruniform.dm
@@ -1,8 +1,13 @@
/obj/item/clothing/under/donator/chayse
name = "Navy Junior Officer's uniform"
desc = "It's a long sleeved Nanotrasen Navy uniform, worn by junior officers."
+ icon = 'icons/clothing/donator/uniform/chayse.dmi'
icon_state = "Chayse_blue"
- item_state = "Chayse_blue"
+ worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
+ //worn_rolled_down = TRUE
+ worn_rolldown_state = "Chayse_blue_d"
+ //worn_rolled_sleeves = TRUE
+ worn_rollsleeve_state = "Chayse_blue_r"
/obj/item/clothing/under/donator/crystalnole
name = "keyhole sweater"
diff --git a/code/modules/jobs/job_types/station/engineering/station_engineer.dm b/code/modules/jobs/job_types/station/engineering/station_engineer.dm
index f1097840ce7..0d4cf9dbdad 100644
--- a/code/modules/jobs/job_types/station/engineering/station_engineer.dm
+++ b/code/modules/jobs/job_types/station/engineering/station_engineer.dm
@@ -1,6 +1,6 @@
/datum/role/job/station/engineer
id = JOB_ID_STATION_ENGINEER
- title = "Engineer"
+ title = "Station Engineer"
flag = ENGINEER
departments = list(DEPARTMENT_ENGINEERING)
department_flag = ENGSEC
@@ -38,7 +38,7 @@
minimal_player_age = 3
outfit_type = /datum/outfit/job/station/station_engineer
- desc = "An Engineer keeps the facility running. They repair damages, keep the atmosphere stable, and ensure that power is being \
+ desc = "A Station Engineer keeps the facility running. They repair damages, keep the atmosphere stable, and ensure that power is being \
generated and distributed. On quiet shifts, they may be called upon to make cosmetic alterations to the facility."
/datum/prototype/struct/alt_title/maint_tech
title = "Maintenance Technician"
diff --git a/code/modules/loadout/loadout_role_restricted.dm b/code/modules/loadout/loadout_role_restricted.dm
index fcd274805ef..b2b164feb42 100644
--- a/code/modules/loadout/loadout_role_restricted.dm
+++ b/code/modules/loadout/loadout_role_restricted.dm
@@ -89,7 +89,7 @@
//Command
/datum/loadout_entry/restricted/command
subcategory = "Command"
- allowed_roles = list("Facility Director", "Head of Personnel", "Chief Medical Officer", "Head of Security", "Research Director", "Chief Engineer", "Command Secretary", "Blueshield")
+ allowed_roles = list("Facility Director", "Head of Personnel", "Chief Medical Officer", "Head of Security", "Research Director", "Chief Engineer", "Bridge Officer", "Blueshield")
/datum/loadout_entry/restricted/command/eyes
slot = SLOT_ID_GLASSES
diff --git a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm
index 1c0778736ca..9bbc246f5dc 100644
--- a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm
+++ b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm
@@ -65,14 +65,13 @@
new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500),
new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3100),
- new /datum/data/mining_equipment("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 125),
- new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 175),
- new /datum/data/mining_equipment("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250),
- new /datum/data/mining_equipment("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300),
- new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000),
- new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
- new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1200),
- new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000),
+ new /datum/data/mining_equipment("KA White Tracer Rounds", /obj/item/ka_modkit/tracer, 125),
+ new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/ka_modkit/tracer/adjustable, 175),
+ new /datum/data/mining_equipment("KA Super Chassis", /obj/item/ka_modkit/chassis_mod, 250),
+ new /datum/data/mining_equipment("KA Hyper Chassis", /obj/item/ka_modkit/chassis_mod/orange, 300),
+ new /datum/data/mining_equipment("KA Range Increase", /obj/item/ka_modkit/range, 1000),
+ new /datum/data/mining_equipment("KA Damage Increase", /obj/item/ka_modkit/damage, 1000),
+ new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/ka_modkit/cooldown, 1200),
new /datum/data/mining_equipment("KA Holster", /obj/item/clothing/accessory/holster/waist/kinetic_accelerator, 350),
new /datum/data/mining_equipment("Fine Excavation Kit - Chisels",/obj/item/storage/excavation, 500),
new /datum/data/mining_equipment("Fine Excavation Kit - Measuring Tape",/obj/item/measuring_tape, 125),
diff --git a/code/modules/mob/living/silicon/emote.dm b/code/modules/mob/living/silicon/emote.dm
index 6fc95585ebe..02ea58741c8 100644
--- a/code/modules/mob/living/silicon/emote.dm
+++ b/code/modules/mob/living/silicon/emote.dm
@@ -243,6 +243,66 @@
playsound(src.loc, 'sound/machines/gonk.ogg', 50, 0)
m_type = 1
+ if("nya")
+ var/mob/living/silicon/robot/R = src
+ if (istype(R) && R.module.is_cat())
+ message = "lets out a nya."
+
+ playsound(loc, 'sound/voice/nya.ogg', 50, 1, -1)
+ m_type = 2
+ else
+ to_chat(src, "You're not a cat!")
+
+ if("mrrp")
+ var/mob/living/silicon/robot/R = src
+ if (istype(R) && R.module.is_cat())
+ message = "mrrps."
+
+ playsound(loc, 'sound/voice/mrrp.ogg', 50, 1, -1)
+ m_type = 2
+ else
+ to_chat(src, "You're not a cat!")
+
+ if("prbt")
+ var/mob/living/silicon/robot/R = src
+ if (istype(R) && R.module.is_cat())
+ message = "prbts."
+
+ playsound(loc, 'sound/misc/prbt.ogg', 50, 1, -1)
+ m_type = 2
+ else
+ to_chat(src, "You're not a cat!")
+
+ if("meow", "meows")
+ var/mob/living/silicon/robot/R = src
+ if (istype(R) && R.module.is_cat())
+ message = "prbts."
+
+ playsound(loc, 'sound/voice/meow1.ogg', 50, 1, -1)
+ m_type = 2
+ else
+ to_chat(src, "You're not a cat!")
+
+ if("hiss")
+ var/mob/living/silicon/robot/R = src
+ if (istype(R) && R.module.is_cat())
+ message = "lets out a hiss."
+
+ playsound(loc, 'sound/voice/hiss.ogg', 50, 1, -1)
+ m_type = 2
+ else
+ to_chat(src, "You're not a cat!")
+
+ if("purr")
+ var/mob/living/silicon/robot/R = src
+ if (istype(R) && R.module.is_cat())
+ message = "purrs softly."
+
+ playsound(loc, 'sound/voice/purr.ogg', 50, 1, -1)
+ m_type = 2
+ else
+ to_chat(src, "You're not a cat!")
+
if ("help")
to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitch_s, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look, beep, ping, \nbuzz, law, halt, yes, no")
else
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 740c7c9122a..1fd799bac8d 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -755,6 +755,18 @@
else
to_chat(usr, "Upgrade error!")
+ else if(istype(W, /obj/item/ka_modkit/))
+ var/obj/item/ka_modkit/M = W
+ if(!opened)
+ to_chat(usr, "You must access the borgs internals!")
+ else if(!src.module && M.require_module)
+ to_chat(usr, "The borg must choose a module before it can be upgraded!")
+ else
+ if(M.install(src))
+ user.transfer_item_to_loc(M, src, INV_OP_FORCE)
+ to_chat(usr, "You apply the modkit to [src]!")
+ else
+ to_chat(usr, "Upgrade error!")
else
if( !(istype(W, /obj/item/robotanalyzer) || istype(W, /obj/item/healthanalyzer)) )
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
index e0bcc284396..cae28822824 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
@@ -221,6 +221,9 @@ GLOBAL_LIST_INIT(robot_modules, list(
/obj/item/robot_module/proc/is_dog()
return FALSE
+/obj/item/robot_module/proc/is_cat()
+ return FALSE
+
/obj/item/robot_module/robot/get_modules()
. = ..()
// Common items that all modules have.
@@ -293,6 +296,12 @@ GLOBAL_LIST_INIT(robot_modules, list(
// This is the only non-canid dogborg type right now.
return R.icontype != "F3-LINE"
+/obj/item/robot_module/robot/quad/is_cat()
+ var/mob/living/silicon/robot/R = loc
+ ASSERT(istype(R))
+ // This is the only non-canid dogborg type right now.
+ return R.icontype == "F3-LINE"
+
// Custom sprite stuff. There's a dedicated system for this, not sure why this is done separately.
/obj/item/robot_module/robot/quad/engi/handle_custom_item(mob/living/silicon/robot/R)
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 669cbbf30bb..9f0a4594449 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -74,13 +74,13 @@
if(max_mod_capacity)
. += "[get_remaining_mod_capacity()]% mod capacity remaining."
for(var/A in get_modkits())
- var/obj/item/borg/upgrade/modkit/M = A
+ var/obj/item/ka_modkit/M = A
. += "There is \a [M] installed, using [M.cost]% capacity."
/obj/item/gun/energy/kinetic_accelerator/Exited(atom/movable/AM)
. = ..()
- if((AM in modkits) && istype(AM, /obj/item/borg/upgrade/modkit))
- var/obj/item/borg/upgrade/modkit/M = AM
+ if((AM in modkits) && istype(AM, /obj/item/ka_modkit))
+ var/obj/item/ka_modkit/M = AM
M.uninstall(src, FALSE)
/obj/item/gun/energy/kinetic_accelerator/attackby(obj/item/I, mob/user)
@@ -88,12 +88,12 @@
if(modkits.len)
to_chat(user, "You pry the modifications out.")
playsound(loc, I.tool_sound, 100, 1)
- for(var/obj/item/borg/upgrade/modkit/M in modkits)
+ for(var/obj/item/ka_modkit/M in modkits)
M.uninstall(src)
else
to_chat(user, "There are no modifications currently installed.")
- if(istype(I, /obj/item/borg/upgrade/modkit))
- var/obj/item/borg/upgrade/modkit/MK = I
+ if(istype(I, /obj/item/ka_modkit))
+ var/obj/item/ka_modkit/MK = I
MK.install(src, user)
else
..()
@@ -101,7 +101,7 @@
/obj/item/gun/energy/kinetic_accelerator/proc/get_remaining_mod_capacity()
var/current_capacity_used = 0
for(var/A in get_modkits())
- var/obj/item/borg/upgrade/modkit/M = A
+ var/obj/item/ka_modkit/M = A
current_capacity_used += M.cost
return max_mod_capacity - current_capacity_used
@@ -113,7 +113,7 @@
/obj/item/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/projectile/kinetic/K)
K.kinetic_gun = src //do something special on-hit, easy!
for(var/A in get_modkits())
- var/obj/item/borg/upgrade/modkit/M = A
+ var/obj/item/ka_modkit/M = A
M.modify_projectile(K)
/obj/item/gun/energy/kinetic_accelerator/cyborg
@@ -121,7 +121,7 @@
unique_frequency = TRUE
/obj/item/gun/energy/kinetic_accelerator/cyborg/Destroy()
- for(var/obj/item/borg/upgrade/modkit/M in modkits)
+ for(var/obj/item/ka_modkit/M in modkits)
M.uninstall(src)
return ..()
@@ -130,7 +130,7 @@
unique_frequency = TRUE
/obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg/Destroy()
- for(var/obj/item/borg/upgrade/modkit/M in modkits)
+ for(var/obj/item/ka_modkit/M in modkits)
M.uninstall(src)
return ..()
@@ -226,7 +226,7 @@
/obj/projectile/kinetic/Bump(atom/target)
if(kinetic_gun)
var/list/mods = kinetic_gun.get_modkits()
- for(var/obj/item/borg/upgrade/modkit/M in mods)
+ for(var/obj/item/ka_modkit/M in mods)
M.projectile_prehit(src, target, kinetic_gun)
if(!pressure_decrease_active && !lavaland_environment_check(get_turf(src)))
name = "weakened [name]"
@@ -259,9 +259,9 @@
target_turf = get_turf(src)
if(kinetic_gun) //hopefully whoever shot this was not very, very unfortunate.
var/list/mods = kinetic_gun.get_modkits()
- for(var/obj/item/borg/upgrade/modkit/M in mods)
+ for(var/obj/item/ka_modkit/M in mods)
M.projectile_strike_predamage(src, target_turf, target, kinetic_gun)
- for(var/obj/item/borg/upgrade/modkit/M in mods)
+ for(var/obj/item/ka_modkit/M in mods)
M.projectile_strike(src, target_turf, target, kinetic_gun)
if(ismineralturf(target_turf))
var/turf/simulated/mineral/M = target_turf
@@ -271,13 +271,13 @@
//Modkits
-/obj/item/borg/upgrade/modkit
+/obj/item/ka_modkit
name = "kinetic accelerator modification kit"
desc = "An upgrade for kinetic accelerators."
icon = 'icons/obj/objects.dmi'
icon_state = "modkit"
w_class = WEIGHT_CLASS_SMALL
- require_module = 1
+ var/require_module = 1
// module_type = list(/obj/item/robot_module/miner)
var/denied_type = null
var/maximum_of_type = 1
@@ -286,25 +286,25 @@
var/minebot_upgrade = TRUE
var/minebot_exclusive = FALSE
-/obj/item/borg/upgrade/modkit/examine(mob/user, dist)
+/obj/item/ka_modkit/examine(mob/user, dist)
. = ..()
. += "Occupies [cost]% of mod capacity."
-/obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user)
+/obj/item/ka_modkit/attackby(obj/item/A, mob/user)
if(istype(A, /obj/item/gun/energy/kinetic_accelerator))
install(A, user)
else
..()
/*
-/obj/item/borg/upgrade/modkit/afterInstall(mob/living/silicon/robot/R)
+/obj/item/ka_modkit/afterInstall(mob/living/silicon/robot/R)
for(var/obj/item/gun/energy/kinetic_accelerator/H in R.module.modules)
if(install(H, R)) //It worked
return
to_chat(R, "Upgrade error - Aborting Kinetic Accelerator linking.") //No applicable KA found, insufficient capacity, or some other problem.
*/
-/obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
+/obj/item/ka_modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
. = TRUE
if(src in KA.modkits) // Sanity check to prevent installing the same modkit twice thanks to occasional click/lag delays.
return FALSE
@@ -318,7 +318,7 @@
if(denied_type)
var/number_of_denied = 0
for(var/A in KA.get_modkits())
- var/obj/item/borg/upgrade/modkit/M = A
+ var/obj/item/ka_modkit/M = A
if(istype(M, denied_type))
number_of_denied++
if(number_of_denied >= maximum_of_type)
@@ -340,50 +340,50 @@
to_chat(user, "You don't have room([KA.get_remaining_mod_capacity()]% remaining, [cost]% needed) to install this modkit. Use a crowbar to remove existing modkits.")
. = FALSE
-/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA, forcemove = TRUE)
+/obj/item/ka_modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA, forcemove = TRUE)
KA.modkits -= src
if(forcemove)
forceMove(get_turf(KA))
-/obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/projectile/kinetic/K)
+/obj/item/ka_modkit/proc/modify_projectile(obj/projectile/kinetic/K)
//use this one for effects you want to trigger before any damage is done at all and before damage is decreased by pressure
-/obj/item/borg/upgrade/modkit/proc/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/proc/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
//use this one for effects you want to trigger before mods that do damage
-/obj/item/borg/upgrade/modkit/proc/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/proc/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
//and this one for things that don't need to trigger before other damage-dealing mods
-/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/proc/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
//Range
-/obj/item/borg/upgrade/modkit/range
+/obj/item/ka_modkit/range
name = "range increase"
desc = "Increases the range of a kinetic accelerator when installed."
modifier = 1
cost = 25
-/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/projectile/kinetic/K)
+/obj/item/ka_modkit/range/modify_projectile(obj/projectile/kinetic/K)
K.range += modifier
//Damage
-/obj/item/borg/upgrade/modkit/damage
+/obj/item/ka_modkit/damage
name = "damage increase"
desc = "Increases the damage of kinetic accelerator when installed."
modifier = 10
-/obj/item/borg/upgrade/modkit/damage/modify_projectile(obj/projectile/kinetic/K)
+/obj/item/ka_modkit/damage/modify_projectile(obj/projectile/kinetic/K)
K.damage += modifier
//Cooldown
-/obj/item/borg/upgrade/modkit/cooldown
+/obj/item/ka_modkit/cooldown
name = "cooldown decrease"
desc = "Decreases the cooldown of a kinetic accelerator. Not rated for minebot use."
modifier = 2.5
minebot_upgrade = FALSE
var/decreased
-/obj/item/borg/upgrade/modkit/cooldown/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
+/obj/item/ka_modkit/cooldown/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
. = ..()
if(.)
var/old = KA.overheat_time
@@ -391,16 +391,16 @@
decreased = old - KA.overheat_time
-/obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/cooldown/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
KA.overheat_time += decreased
..()
-/obj/item/borg/upgrade/modkit/cooldown/minebot
+/obj/item/ka_modkit/cooldown/minebot
name = "minebot cooldown decrease"
desc = "Decreases the cooldown of a kinetic accelerator. Only rated for minebot use."
icon_state = "door_electronics"
icon = 'icons/obj/module.dmi'
- denied_type = /obj/item/borg/upgrade/modkit/cooldown/minebot
+ denied_type = /obj/item/ka_modkit/cooldown/minebot
modifier = 10
cost = 0
minebot_upgrade = TRUE
@@ -408,15 +408,15 @@
//AoE blasts
-/obj/item/borg/upgrade/modkit/aoe
+/obj/item/ka_modkit/aoe
modifier = 0
var/turf_aoe = FALSE
var/stats_stolen = FALSE
-/obj/item/borg/upgrade/modkit/aoe/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
+/obj/item/ka_modkit/aoe/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
. = ..()
if(.)
- for(var/obj/item/borg/upgrade/modkit/aoe/AOE in KA.modkits) //make sure only one of the aoe modules has values if somebody has multiple
+ for(var/obj/item/ka_modkit/aoe/AOE in KA.modkits) //make sure only one of the aoe modules has values if somebody has multiple
if(AOE.stats_stolen || AOE == src)
continue
modifier += AOE.modifier //take its modifiers
@@ -425,16 +425,16 @@
AOE.turf_aoe = FALSE
AOE.stats_stolen = TRUE
-/obj/item/borg/upgrade/modkit/aoe/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/aoe/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
..()
modifier = initial(modifier) //get our modifiers back
turf_aoe = initial(turf_aoe)
stats_stolen = FALSE
-/obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/projectile/kinetic/K)
+/obj/item/ka_modkit/aoe/modify_projectile(obj/projectile/kinetic/K)
K.name = "kinetic explosion"
-/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/aoe/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(stats_stolen)
return
new /obj/effect/temp_visual/explosion/fast(target_turf)
@@ -451,38 +451,38 @@
// L.apply_damage(K.damage*modifier, K.damage_type, K.def_zone, armor)
to_chat(L, "You're struck by a [K.name]!")
-/obj/item/borg/upgrade/modkit/aoe/turfs
+/obj/item/ka_modkit/aoe/turfs
name = "mining explosion"
desc = "Causes the kinetic accelerator to destroy rock in an AoE."
- denied_type = /obj/item/borg/upgrade/modkit/aoe/turfs
+ denied_type = /obj/item/ka_modkit/aoe/turfs
turf_aoe = TRUE
-/obj/item/borg/upgrade/modkit/aoe/turfs/andmobs
+/obj/item/ka_modkit/aoe/turfs/andmobs
name = "offensive mining explosion"
desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE."
maximum_of_type = 3
modifier = 0.25
-/obj/item/borg/upgrade/modkit/aoe/mobs
+/obj/item/ka_modkit/aoe/mobs
name = "offensive explosion"
desc = "Causes the kinetic accelerator to damage mobs in an AoE."
modifier = 0.2
//Minebot passthrough
-/obj/item/borg/upgrade/modkit/minebot_passthrough
+/obj/item/ka_modkit/minebot_passthrough
name = "minebot passthrough"
desc = "Causes kinetic accelerator shots to pass through minebots."
cost = 0
//Tendril-unique modules
-/obj/item/borg/upgrade/modkit/cooldown/repeater
+/obj/item/ka_modkit/cooldown/repeater
name = "rapid repeater"
desc = "Quarters the kinetic accelerator's cooldown on striking a living target, but greatly increases the base cooldown."
- denied_type = /obj/item/borg/upgrade/modkit/cooldown/repeater
+ denied_type = /obj/item/ka_modkit/cooldown/repeater
modifier = -14 //Makes the cooldown 3 seconds(with no cooldown mods) if you miss. Don't miss.
cost = 50
-/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/cooldown/repeater/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
var/valid_repeat = FALSE
if(isliving(target))
var/mob/living/L = target
@@ -495,7 +495,7 @@
KA.attempt_reload(KA.overheat_time * 0.25) //If you hit, the cooldown drops to 0.75 seconds.
/*
-/obj/item/borg/upgrade/modkit/lifesteal
+/obj/item/ka_modkit/lifesteal
name = "lifesteal crystal"
desc = "Causes kinetic accelerator shots to slightly heal the firer on striking a living target."
icon_state = "modkit_crystal"
@@ -503,7 +503,7 @@
cost = 20
var/static/list/damage_heal_order = list(BRUTE, BURN, OXY)
-/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/lifesteal/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(isliving(target) && isliving(K.firer))
var/mob/living/L = target
if(L.stat == DEAD)
@@ -512,14 +512,14 @@
L.heal_ordered_damage(modifier, damage_heal_order)
*/
-/obj/item/borg/upgrade/modkit/resonator_blasts
+/obj/item/ka_modkit/resonator_blasts
name = "resonator blast"
desc = "Causes kinetic accelerator shots to leave and detonate resonator blasts."
- denied_type = /obj/item/borg/upgrade/modkit/resonator_blasts
+ denied_type = /obj/item/ka_modkit/resonator_blasts
cost = 30
modifier = 0.25 //A bonus 15 damage if you burst the field on a target, 60 if you lure them into it.
-/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/resonator_blasts/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(target_turf && !ismineralturf(target_turf)) //Don't make fields on mineral turfs.
var/obj/effect/resonance/R = locate(/obj/effect/resonance) in target_turf
if(R)
@@ -529,16 +529,16 @@
new /obj/effect/resonance(target_turf, K.firer, 30)
/*
-/obj/item/borg/upgrade/modkit/bounty
+/obj/item/ka_modkit/bounty
name = "death syphon"
desc = "Killing or assisting in killing a creature permanently increases your damage against that type of creature."
- denied_type = /obj/item/borg/upgrade/modkit/bounty
+ denied_type = /obj/item/ka_modkit/bounty
modifier = 1.25
cost = 30
var/maximum_bounty = 25
var/list/bounties_reaped = list()
-/obj/item/borg/upgrade/modkit/bounty/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/bounty/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(isliving(target))
var/mob/living/L = target
var/list/existing_marks = L.has_status_effect_list(STATUS_EFFECT_SYPHONMARK)
@@ -549,7 +549,7 @@
qdel(SM)
L.apply_status_effect(STATUS_EFFECT_SYPHONMARK, src)
-/obj/item/borg/upgrade/modkit/bounty/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/bounty/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(isliving(target))
var/mob/living/L = target
if(bounties_reaped[L.type])
@@ -559,7 +559,7 @@
var/armor = L.run_armor_check(K.def_zone, K.flag, null, null, K.armour_penetration)
L.apply_damage(bounties_reaped[L.type]*kill_modifier, K.damage_type, K.def_zone, armor)
-/obj/item/borg/upgrade/modkit/bounty/proc/get_kill(mob/living/L)
+/obj/item/ka_modkit/bounty/proc/get_kill(mob/living/L)
var/bonus_mod = 1
if(ismegafauna(L)) //megafauna reward
bonus_mod = 4
@@ -570,80 +570,80 @@
*/
//Indoors
-/obj/item/borg/upgrade/modkit/indoors
+/obj/item/ka_modkit/indoors
name = "decrease pressure penalty"
desc = "A syndicate modification kit that increases the damage a kinetic accelerator does in high pressure environments."
modifier = 2
- denied_type = /obj/item/borg/upgrade/modkit/indoors
+ denied_type = /obj/item/ka_modkit/indoors
maximum_of_type = 2
cost = 35
-/obj/item/borg/upgrade/modkit/indoors/modify_projectile(obj/projectile/kinetic/K)
+/obj/item/ka_modkit/indoors/modify_projectile(obj/projectile/kinetic/K)
K.pressure_decrease *= modifier
//Trigger Guard
/*
-/obj/item/borg/upgrade/modkit/trigger_guard
+/obj/item/ka_modkit/trigger_guard
name = "modified trigger guard"
desc = "Allows creatures normally incapable of firing guns to operate the weapon when installed."
cost = 20
- denied_type = /obj/item/borg/upgrade/modkit/trigger_guard
+ denied_type = /obj/item/ka_modkit/trigger_guard
-/obj/item/borg/upgrade/modkit/trigger_guard/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
+/obj/item/ka_modkit/trigger_guard/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
. = ..()
if(.)
KA.trigger_guard = TRIGGER_GUARD_ALLOW_ALL
-/obj/item/borg/upgrade/modkit/trigger_guard/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/trigger_guard/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
KA.trigger_guard = TRIGGER_GUARD_NORMAL
..()
*/
//Cosmetic
-/obj/item/borg/upgrade/modkit/chassis_mod
+/obj/item/ka_modkit/chassis_mod
name = "super chassis"
desc = "Makes your KA yellow. All the fun of having a more powerful KA without actually having a more powerful KA."
cost = 0
- denied_type = /obj/item/borg/upgrade/modkit/chassis_mod
+ denied_type = /obj/item/ka_modkit/chassis_mod
var/chassis_icon = "kineticgun_u"
var/chassis_name = "super-kinetic accelerator"
-/obj/item/borg/upgrade/modkit/chassis_mod/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
+/obj/item/ka_modkit/chassis_mod/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
. = ..()
if(.)
KA.icon_state = chassis_icon
KA.name = chassis_name
-/obj/item/borg/upgrade/modkit/chassis_mod/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/chassis_mod/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
KA.icon_state = initial(KA.icon_state)
KA.name = initial(KA.name)
..()
-/obj/item/borg/upgrade/modkit/chassis_mod/orange
+/obj/item/ka_modkit/chassis_mod/orange
name = "hyper chassis"
desc = "Makes your KA orange. All the fun of having explosive blasts without actually having explosive blasts."
chassis_icon = "kineticgun_h"
chassis_name = "hyper-kinetic accelerator"
-/obj/item/borg/upgrade/modkit/tracer
+/obj/item/ka_modkit/tracer
name = "white tracer bolts"
desc = "Causes kinetic accelerator bolts to have a white tracer trail and explosion."
cost = 0
- denied_type = /obj/item/borg/upgrade/modkit/tracer
+ denied_type = /obj/item/ka_modkit/tracer
var/bolt_color = "#FFFFFF"
-/obj/item/borg/upgrade/modkit/tracer/modify_projectile(obj/projectile/kinetic/K)
+/obj/item/ka_modkit/tracer/modify_projectile(obj/projectile/kinetic/K)
K.icon_state = "ka_tracer"
K.color = bolt_color
-/obj/item/borg/upgrade/modkit/tracer/adjustable
+/obj/item/ka_modkit/tracer/adjustable
name = "adjustable tracer bolts"
desc = "Causes kinetic accelerator bolts to have an adjustable-colored tracer trail and explosion. Use in-hand to change color."
-/obj/item/borg/upgrade/modkit/tracer/adjustable/attack_self(mob/user)
+/obj/item/ka_modkit/tracer/adjustable/attack_self(mob/user)
. = ..()
if(.)
return
diff --git a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm
index 2002f672f14..dbe27216412 100644
--- a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm
+++ b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm
@@ -2225,27 +2225,27 @@
glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/soda/sarsaparilla
- name = "CC's Homemade Sarsaparilla"
+ name = "Sarsaparilla"
id = "sarsaparilla"
description = "The Cyan Cowgirl rides again!"
taste_description = "earthy vanilla and harsh bubbles"
color = "#503301"
adj_temp = -2
- glass_name = "CC's Homemade Sarsaparilla"
+ glass_name = "Sarsaparilla"
glass_desc = "Real girls drink from the bottle."
glass_icon = DRINK_ICON_NOISY
glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/soda/sassafras
- name = "CC's Famous Root Beer"
+ name = "Root Beer"
id = "sassafras"
description = "Feel nostalgia for a range you never rode."
taste_description = "bitter licorice and sweet vanilla"
color = "#312003"
adj_temp = -2
- glass_name = "CC's Famous Root Beer"
+ glass_name = "Root Beer"
glass_desc = "Wet your whistle!"
glass_icon = DRINK_ICON_NOISY
glass_special = list(DRINK_FIZZ)
@@ -4045,7 +4045,7 @@
glass_desc = "A spicy take on a summer classic."
/datum/reagent/ethanol/alcsassafras
- name = "CC's Hard Rootbeer"
+ name = "Hard Rootbeer"
id = "alcsassafras"
description = "Doesn't matter if you're drunk when you have a horse to take you home!"
taste_description = "bitter vanilla with a sharp burn"
diff --git a/code/modules/reagents/machinery/dispenser/synthesizer.dm b/code/modules/reagents/machinery/dispenser/synthesizer.dm
index f225627d1e6..b6cb49b102b 100644
--- a/code/modules/reagents/machinery/dispenser/synthesizer.dm
+++ b/code/modules/reagents/machinery/dispenser/synthesizer.dm
@@ -79,7 +79,6 @@
/datum/reagent/ethanol/cider,
/datum/reagent/ethanol/ale,
/datum/reagent/ethanol/mead,
- /datum/reagent/ethanol/alcsassafras
)
/obj/item/reagent_synth/cafe
@@ -121,6 +120,7 @@
/datum/reagent/drink/juice/lemon,
/datum/reagent/drink/soda/sassafras,
/datum/reagent/drink/soda/sarsaparilla,
+ /datum/reagent/drink/soda/gingerale,
)
/obj/item/reagent_synth/medicine
diff --git a/code/modules/research/designs/mining_toys.dm b/code/modules/research/designs/mining_toys.dm
index bb8e85c92b8..81b8317a982 100644
--- a/code/modules/research/designs/mining_toys.dm
+++ b/code/modules/research/designs/mining_toys.dm
@@ -48,6 +48,28 @@
materials = list(MAT_STEEL = 10000, MAT_GLASS = 5000, MAT_GOLD = 5000, MAT_PHORON = 5000, MAT_DIAMOND = 100, MAT_URANIUM = 1000)
build_path = /obj/item/vertibore
+// KA Upgrades (That Are Too Powerful to Just Be Vending Items)
+/datum/design/science/mining/ka_modkit_aoe
+ design_name = "Experimental Kinetic Accelerator Mod (Anti-Material AoE)"
+ id = "kamodkit_aoe"
+ req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5)
+ materials = list(MAT_STEEL = 500, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_URANIUM = 500)
+ build_path = /obj/item/ka_modkit/aoe/turfs
+
+/datum/design/science/mining/ka_modkit_aoe_mob
+ design_name = "Experimental Kinetic Accelerator Mod (Anti-Organic AoE)"
+ id = "kamodkit_aoe_mob"
+ req_tech = list(TECH_BIO = 6, TECH_ENGINEERING = 5)
+ materials = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_GOLD = 1000, MAT_PHORON = 500)
+ build_path = /obj/item/ka_modkit/aoe/mobs
+
+/datum/design/science/mining/ka_modkit_aoe_combo
+ design_name = "Experimental Kinetic Accelerator Mod (Combination AoE)"
+ id = "kamodkit_aoe_combo"
+ req_tech = list(TECH_MATERIAL = 7, TECH_BIO = 7, TECH_ENGINEERING = 5)
+ materials = list(MAT_STEEL = 1500, MAT_GLASS = 1500, MAT_SILVER = 500, MAT_GOLD = 500, MAT_DIAMOND = 500)
+ build_path = /obj/item/ka_modkit/aoe/turfs/andmobs
+
// Mining other equipment
/datum/design/science/mining/mining_scanner
id = "mining_scanner"
diff --git a/code/modules/vore/fluffstuff/custom_items.dm b/code/modules/vore/fluffstuff/custom_items.dm
index 1da2469624e..e64daa70ef8 100644
--- a/code/modules/vore/fluffstuff/custom_items.dm
+++ b/code/modules/vore/fluffstuff/custom_items.dm
@@ -1482,21 +1482,21 @@
*/
//InterroLouis - Kai Highlands
-/obj/item/borg/upgrade/modkit/chassis_mod/kai
+/obj/item/ka_modkit/chassis_mod/kai
name = "kai chassis"
desc = "Makes your KA green. All the fun of having a more powerful KA without actually having a more powerful KA."
cost = 0
- denied_type = /obj/item/borg/upgrade/modkit/chassis_mod
+ denied_type = /obj/item/ka_modkit/chassis_mod
chassis_icon = "kineticgun_K"
chassis_name = "Kai-netic Accelerator"
var/chassis_desc = "A self recharging, ranged mining tool that does increased damage in low temperature. Capable of holding up to six slots worth of mod kits. It seems to have been painted an ugly green, and has a small image of a bird scratched crudely into the stock."
var/chassis_icon_file = 'icons/vore/custom_guns_vr.dmi'
-/obj/item/borg/upgrade/modkit/chassis_mod/kai/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
+/obj/item/ka_modkit/chassis_mod/kai/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
KA.desc = chassis_desc
KA.icon = chassis_icon_file
..()
-/obj/item/borg/upgrade/modkit/chassis_mod/kai/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/ka_modkit/chassis_mod/kai/uninstall(obj/item/gun/energy/kinetic_accelerator/KA)
KA.desc = initial(KA.desc)
KA.icon = initial(KA.icon)
..()
diff --git a/config/custom_items.txt b/config/custom_items.txt
index 125e4983dde..2adfcbac3da 100644
--- a/config/custom_items.txt
+++ b/config/custom_items.txt
@@ -332,7 +332,7 @@ item_path: /obj/item/clothing/accessory/badge/holo/detective/ruda
{
ckey: interrolouis
character_name: Kai Highlands
-item_path: /obj/item/borg/upgrade/modkit/chassis_mod/kai
+item_path: /obj/item/ka_modkit/chassis_mod/kai
}
{
diff --git a/icons/clothing/donator/uniform/chayse.dmi b/icons/clothing/donator/uniform/chayse.dmi
new file mode 100644
index 00000000000..f1649c512d5
Binary files /dev/null and b/icons/clothing/donator/uniform/chayse.dmi differ
diff --git a/icons/mob/clothing/donatorclothing.dmi b/icons/mob/clothing/donatorclothing.dmi
index d4efe455517..fa8c9dac655 100644
Binary files a/icons/mob/clothing/donatorclothing.dmi and b/icons/mob/clothing/donatorclothing.dmi differ
diff --git a/icons/mob/items/64x64_lefthand.dmi b/icons/mob/items/64x64_lefthand.dmi
index c68a34da638..0f271872ab5 100644
Binary files a/icons/mob/items/64x64_lefthand.dmi and b/icons/mob/items/64x64_lefthand.dmi differ
diff --git a/icons/mob/items/64x64_righthand.dmi b/icons/mob/items/64x64_righthand.dmi
index 8d1ba609014..114c1d1fef4 100644
Binary files a/icons/mob/items/64x64_righthand.dmi and b/icons/mob/items/64x64_righthand.dmi differ
diff --git a/icons/obj/clothing/donatorclothing.dmi b/icons/obj/clothing/donatorclothing.dmi
index af12746d2a8..6b8af239714 100644
Binary files a/icons/obj/clothing/donatorclothing.dmi and b/icons/obj/clothing/donatorclothing.dmi differ