|
|
|
@@ -1,51 +1,126 @@
|
|
|
|
|
#define LAVALAND_EQUIPMENT_EFFECT_PRESSURE 50 //what pressure you have to be under to increase the effect of equipment meant for lavaland
|
|
|
|
|
#define HEATMODE_ATMOSPHERE 312.1 //kPa. basically virgo 2's
|
|
|
|
|
#define HEATMODE_TEMP 612 //kelvin. basically virgo 2's
|
|
|
|
|
/**
|
|
|
|
|
* This is here for now
|
|
|
|
|
*/
|
|
|
|
|
/proc/lavaland_environment_check(turf/simulated/T)
|
|
|
|
|
. = TRUE
|
|
|
|
|
if(!istype(T))
|
|
|
|
|
return
|
|
|
|
|
var/datum/gas_mixture/environment = T.return_air()
|
|
|
|
|
if(!istype(environment))
|
|
|
|
|
return
|
|
|
|
|
var/pressure = environment.return_pressure()
|
|
|
|
|
if(pressure > LAVALAND_EQUIPMENT_EFFECT_PRESSURE)
|
|
|
|
|
. = FALSE
|
|
|
|
|
if(environment.temperature < (T20C - 30))
|
|
|
|
|
. = TRUE
|
|
|
|
|
|
|
|
|
|
/proc/virgotwo_environment_check(turf/simulated/T)
|
|
|
|
|
. = TRUE
|
|
|
|
|
if(!istype(T))
|
|
|
|
|
return
|
|
|
|
|
var/datum/gas_mixture/environment = T.return_air()
|
|
|
|
|
if(!istype(environment))
|
|
|
|
|
return
|
|
|
|
|
var/pressure = environment.return_pressure()
|
|
|
|
|
if(pressure < HEATMODE_ATMOSPHERE - 20)
|
|
|
|
|
. = FALSE
|
|
|
|
|
if(environment.temperature > HEATMODE_TEMP - 30)
|
|
|
|
|
. = TRUE
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator
|
|
|
|
|
name = "proto-kinetic accelerator"
|
|
|
|
|
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."
|
|
|
|
|
desc = "A self recharging, ranged mining tool that does increased damage in low pressure."
|
|
|
|
|
icon = 'icons/obj/gun_vr.dmi'
|
|
|
|
|
icon_state = "kineticgun"
|
|
|
|
|
item_state = "kineticgun"
|
|
|
|
|
item_icons = list(
|
|
|
|
|
slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi',
|
|
|
|
|
slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi')
|
|
|
|
|
slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi',
|
|
|
|
|
)
|
|
|
|
|
item_state = "kineticgun"
|
|
|
|
|
// ammo_type = list(/obj/item/ammo_casing/energy/kinetic)
|
|
|
|
|
cell_type = /obj/item/weapon/cell/device/weapon/empproof
|
|
|
|
|
item_flags = NONE
|
|
|
|
|
charge_meter = FALSE
|
|
|
|
|
// obj_flags = UNIQUE_RENAME
|
|
|
|
|
// weapon_weight = WEAPON_LIGHT
|
|
|
|
|
// can_flashlight = 1
|
|
|
|
|
// flight_x_offset = 15
|
|
|
|
|
// flight_y_offset = 9
|
|
|
|
|
// automatic_charge_overlays = FALSE
|
|
|
|
|
projectile_type = /obj/item/projectile/kinetic
|
|
|
|
|
origin_tech = list(TECH_COMBAT = 3, TECH_POWER = 3, TECH_ENGINEERING = 3)
|
|
|
|
|
can_flashlight = TRUE
|
|
|
|
|
flight_x_offset = 15
|
|
|
|
|
flight_y_offset = 9
|
|
|
|
|
charge_cost = 120 // 20 shots on weapon power cell
|
|
|
|
|
fire_delay = 16
|
|
|
|
|
self_recharge = TRUE
|
|
|
|
|
recharge_time = 10 // every 20*2 seconds will get 20% power restored
|
|
|
|
|
charge_cost = 1200
|
|
|
|
|
battery_lock = TRUE
|
|
|
|
|
fire_sound = 'sound/weapons/kenetic_accel.ogg'
|
|
|
|
|
var/overheat_time = 16
|
|
|
|
|
var/holds_charge = FALSE
|
|
|
|
|
var/unique_frequency = FALSE // modified by KA modkits
|
|
|
|
|
var/overheat = FALSE
|
|
|
|
|
var/emptystate = "kineticgun_empty"
|
|
|
|
|
shot_counter = FALSE
|
|
|
|
|
// can_bayonet = TRUE
|
|
|
|
|
// knife_x_offset = 20
|
|
|
|
|
// knife_y_offset = 12
|
|
|
|
|
|
|
|
|
|
var/max_mod_capacity = 100
|
|
|
|
|
var/list/modkits = list()
|
|
|
|
|
var/empty_state = "kineticgun_empty"
|
|
|
|
|
|
|
|
|
|
var/recharge_timerid
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/consume_next_projectile()
|
|
|
|
|
if(overheat)
|
|
|
|
|
return
|
|
|
|
|
. = ..()
|
|
|
|
|
if(.)
|
|
|
|
|
var/obj/item/projectile/P = .
|
|
|
|
|
modify_projectile(P)
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/handle_post_fire(mob/user, atom/target, pointblank, reflex)
|
|
|
|
|
. = ..()
|
|
|
|
|
attempt_reload()
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/premiumka
|
|
|
|
|
name = "premium accelerator"
|
|
|
|
|
desc = "A premium kinetic accelerator fitted with an extended barrel and increased pressure tank."
|
|
|
|
|
icon_state = "premiumgun"
|
|
|
|
|
item_state = "premiumgun"
|
|
|
|
|
projectile_type = /obj/item/projectile/kinetic/premium
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/examine(mob/user)
|
|
|
|
|
. = ..()
|
|
|
|
|
if(Adjacent(user) && max_mod_capacity)
|
|
|
|
|
if(max_mod_capacity)
|
|
|
|
|
. += "<b>[get_remaining_mod_capacity()]%</b> mod capacity remaining."
|
|
|
|
|
for(var/obj/item/borg/upgrade/modkit/M as anything in get_modkits())
|
|
|
|
|
. += "<span class='notice'>There is a [M.name] mod installed, using <b>[M.cost]%</b> capacity.</span>"
|
|
|
|
|
for(var/A in get_modkits())
|
|
|
|
|
var/obj/item/borg/upgrade/modkit/M = A
|
|
|
|
|
. += "<span class='notice'>There is \a [M] installed, using <b>[M.cost]%</b> capacity.</span>"
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/attackby(obj/item/A, mob/user)
|
|
|
|
|
if(istype(A, /obj/item/weapon/tool/crowbar))
|
|
|
|
|
/obj/item/weapon/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
|
|
|
|
|
M.uninstall(src, FALSE)
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/attackby(obj/item/I, mob/user)
|
|
|
|
|
if(I.has_tool_quality(TOOL_CROWBAR))
|
|
|
|
|
if(modkits.len)
|
|
|
|
|
to_chat(user, "<span class='notice'>You pry the modifications out.</span>")
|
|
|
|
|
playsound(src, A.usesound, 100, 1)
|
|
|
|
|
playsound(loc, I.usesound, 100, 1)
|
|
|
|
|
for(var/obj/item/borg/upgrade/modkit/M in modkits)
|
|
|
|
|
M.uninstall(src)
|
|
|
|
|
else
|
|
|
|
|
to_chat(user, "<span class='notice'>There are no modifications currently installed.</span>")
|
|
|
|
|
else if(istype(A, /obj/item/borg/upgrade/modkit))
|
|
|
|
|
var/obj/item/borg/upgrade/modkit/MK = A
|
|
|
|
|
if(istype(I, /obj/item/borg/upgrade/modkit))
|
|
|
|
|
var/obj/item/borg/upgrade/modkit/MK = I
|
|
|
|
|
MK.install(src, user)
|
|
|
|
|
else
|
|
|
|
|
..()
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/get_remaining_mod_capacity()
|
|
|
|
|
var/current_capacity_used = 0
|
|
|
|
|
for(var/obj/item/borg/upgrade/modkit/M as anything in get_modkits())
|
|
|
|
|
for(var/A in get_modkits())
|
|
|
|
|
var/obj/item/borg/upgrade/modkit/M = A
|
|
|
|
|
current_capacity_used += M.cost
|
|
|
|
|
return max_mod_capacity - current_capacity_used
|
|
|
|
|
|
|
|
|
@@ -55,134 +130,243 @@
|
|
|
|
|
. += A
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/item/projectile/kinetic/K)
|
|
|
|
|
for(var/obj/item/borg/upgrade/modkit/M as anything in get_modkits())
|
|
|
|
|
K.kinetic_gun = src //do something special on-hit, easy!
|
|
|
|
|
for(var/A in get_modkits())
|
|
|
|
|
var/obj/item/borg/upgrade/modkit/M = A
|
|
|
|
|
M.modify_projectile(K)
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/consume_next_projectile()
|
|
|
|
|
var/obj/item/projectile/kinetic/BB = ..()
|
|
|
|
|
if(!istype(BB))
|
|
|
|
|
return
|
|
|
|
|
modify_projectile(BB)
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg
|
|
|
|
|
holds_charge = TRUE
|
|
|
|
|
unique_frequency = TRUE
|
|
|
|
|
|
|
|
|
|
var/turf/proj_turf = get_turf(src)
|
|
|
|
|
if(!isturf(proj_turf))
|
|
|
|
|
return
|
|
|
|
|
var/datum/gas_mixture/environment = proj_turf.return_air()
|
|
|
|
|
if(environment.temperature > 250)
|
|
|
|
|
BB.name = "weakened [BB.name]"
|
|
|
|
|
BB.damage *= BB.pressure_decrease
|
|
|
|
|
return BB
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg/Destroy()
|
|
|
|
|
for(var/obj/item/borg/upgrade/modkit/M in modkits)
|
|
|
|
|
M.uninstall(src)
|
|
|
|
|
return ..()
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/handle_post_fire(mob/user, atom/target, var/pointblank=0, var/reflex=0)
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/premiumka/cyborg
|
|
|
|
|
holds_charge = TRUE
|
|
|
|
|
unique_frequency = TRUE
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/premiumka/cyborg/Destroy()
|
|
|
|
|
for(var/obj/item/borg/upgrade/modkit/M in modkits)
|
|
|
|
|
M.uninstall(src)
|
|
|
|
|
return ..()
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/minebot
|
|
|
|
|
// trigger_guard = TRIGGER_GUARD_ALLOW_ALL
|
|
|
|
|
overheat_time = 20
|
|
|
|
|
holds_charge = TRUE
|
|
|
|
|
unique_frequency = TRUE
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/Initialize()
|
|
|
|
|
. = ..()
|
|
|
|
|
spawn(fire_delay)
|
|
|
|
|
if(power_supply && power_supply.check_charge(charge_cost))
|
|
|
|
|
playsound(src, 'sound/weapons/kenetic_reload.ogg', 60, 1)
|
|
|
|
|
if(!holds_charge)
|
|
|
|
|
empty()
|
|
|
|
|
AddElement(/datum/element/conflict_checking, CONFLICT_ELEMENT_KA)
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/equipped(mob/user)
|
|
|
|
|
. = ..()
|
|
|
|
|
if(power_supply.charge < charge_cost)
|
|
|
|
|
attempt_reload()
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/dropped(mob/user)
|
|
|
|
|
. = ..()
|
|
|
|
|
if(!QDELING(src) && !holds_charge)
|
|
|
|
|
// Put it on a delay because moving item from slot to hand
|
|
|
|
|
// calls dropped().
|
|
|
|
|
addtimer(CALLBACK(src, .proc/empty_if_not_held), 2)
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/empty_if_not_held()
|
|
|
|
|
if(!ismob(loc) && !istype(loc, /obj/item/integrated_circuit))
|
|
|
|
|
empty()
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/empty()
|
|
|
|
|
if(power_supply)
|
|
|
|
|
power_supply.use(power_supply.charge)
|
|
|
|
|
update_icon()
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/attempt_reload(recharge_time)
|
|
|
|
|
if(!power_supply)
|
|
|
|
|
return
|
|
|
|
|
if(overheat)
|
|
|
|
|
return
|
|
|
|
|
if(!recharge_time)
|
|
|
|
|
recharge_time = overheat_time
|
|
|
|
|
overheat = TRUE
|
|
|
|
|
update_icon()
|
|
|
|
|
|
|
|
|
|
var/carried = max(1, loc.ConflictElementCount(CONFLICT_ELEMENT_KA))
|
|
|
|
|
|
|
|
|
|
deltimer(recharge_timerid)
|
|
|
|
|
recharge_timerid = addtimer(CALLBACK(src, .proc/reload), recharge_time * carried, TIMER_STOPPABLE)
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/emp_act(severity)
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/reload()
|
|
|
|
|
power_supply.give(power_supply.maxcharge)
|
|
|
|
|
// process_chamber()
|
|
|
|
|
// if(!suppressed)
|
|
|
|
|
playsound(src, 'sound/weapons/kenetic_reload.ogg', 60, 1)
|
|
|
|
|
// else
|
|
|
|
|
// to_chat(loc, "<span class='warning'>[src] silently charges up.</span>")
|
|
|
|
|
overheat = FALSE
|
|
|
|
|
update_icon()
|
|
|
|
|
|
|
|
|
|
/obj/item/weapon/gun/energy/kinetic_accelerator/update_icon()
|
|
|
|
|
cut_overlays()
|
|
|
|
|
if(!power_supply || !power_supply.check_charge(charge_cost))
|
|
|
|
|
add_overlay(empty_state)
|
|
|
|
|
if(can_flashlight)
|
|
|
|
|
var/iconF = "flight"
|
|
|
|
|
if(gun_light)
|
|
|
|
|
iconF = "flight_on"
|
|
|
|
|
add_overlay(image(icon = icon, icon_state = iconF, pixel_x = flight_x_offset, pixel_y = flight_y_offset))
|
|
|
|
|
if(overheat || (power_supply.charge == 0))
|
|
|
|
|
add_overlay(emptystate)
|
|
|
|
|
|
|
|
|
|
#define KA_ENVIRO_TYPE_COLD 0
|
|
|
|
|
#define KA_ENVIRO_TYPE_HOT 1
|
|
|
|
|
|
|
|
|
|
//Projectiles
|
|
|
|
|
/obj/item/projectile/kinetic
|
|
|
|
|
name = "kinetic force"
|
|
|
|
|
icon = 'icons/obj/projectiles_vr.dmi'
|
|
|
|
|
icon_state = null
|
|
|
|
|
damage = 32
|
|
|
|
|
damage = 30
|
|
|
|
|
damage_type = BRUTE
|
|
|
|
|
check_armour = "bomb"
|
|
|
|
|
range = 3 // Our "range" var is named "kill_count". Yes it is.
|
|
|
|
|
range = 4
|
|
|
|
|
// log_override = TRUE
|
|
|
|
|
|
|
|
|
|
var/pressure_decrease = 0.25
|
|
|
|
|
var/turf_aoe = FALSE
|
|
|
|
|
var/mob_aoe = FALSE
|
|
|
|
|
var/list/hit_overlays = list()
|
|
|
|
|
var/pressure_decrease_active = FALSE
|
|
|
|
|
var/pressure_decrease = 1/3
|
|
|
|
|
var/environment = KA_ENVIRO_TYPE_COLD
|
|
|
|
|
var/obj/item/weapon/gun/energy/kinetic_accelerator/kinetic_gun
|
|
|
|
|
|
|
|
|
|
// /obj/item/projectile/kinetic/pod
|
|
|
|
|
// kill_count = 4
|
|
|
|
|
//
|
|
|
|
|
// /obj/item/projectile/kinetic/pod/regular
|
|
|
|
|
// damage = 50
|
|
|
|
|
// pressure_decrease = 0.5
|
|
|
|
|
//
|
|
|
|
|
// /obj/item/projectile/kinetic/pod/enhanced
|
|
|
|
|
// turf_aoe = TRUE
|
|
|
|
|
// mob_aoe = TRUE
|
|
|
|
|
/obj/item/projectile/kinetic/premium
|
|
|
|
|
damage = 40
|
|
|
|
|
damage_type = BRUTE
|
|
|
|
|
range = 5
|
|
|
|
|
|
|
|
|
|
/obj/item/projectile/kinetic/on_impact(var/atom/A)
|
|
|
|
|
strike_thing(A)
|
|
|
|
|
. = ..()
|
|
|
|
|
/obj/item/projectile/kinetic/Destroy()
|
|
|
|
|
kinetic_gun = null
|
|
|
|
|
return ..()
|
|
|
|
|
|
|
|
|
|
/obj/item/projectile/kinetic/on_hit(var/atom/target)
|
|
|
|
|
/obj/item/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)
|
|
|
|
|
M.projectile_prehit(src, target, kinetic_gun)
|
|
|
|
|
if(!pressure_decrease_active)
|
|
|
|
|
if(environment == KA_ENVIRO_TYPE_COLD)
|
|
|
|
|
if(!lavaland_environment_check(get_turf(src)))
|
|
|
|
|
name = "weakened [name]"
|
|
|
|
|
damage = damage * pressure_decrease
|
|
|
|
|
pressure_decrease_active = TRUE
|
|
|
|
|
else if(environment == KA_ENVIRO_TYPE_HOT)
|
|
|
|
|
if(!virgotwo_environment_check(get_turf(src)))
|
|
|
|
|
name = "weakened [name]"
|
|
|
|
|
damage = damage * pressure_decrease
|
|
|
|
|
pressure_decrease_active = TRUE
|
|
|
|
|
return ..()
|
|
|
|
|
|
|
|
|
|
/obj/item/projectile/kinetic/attack_mob(mob/living/target_mob, distance, miss_modifier)
|
|
|
|
|
if(!pressure_decrease_active)
|
|
|
|
|
if(environment == KA_ENVIRO_TYPE_COLD)
|
|
|
|
|
if(!lavaland_environment_check(get_turf(src)))
|
|
|
|
|
name = "weakened [name]"
|
|
|
|
|
damage = damage * pressure_decrease
|
|
|
|
|
pressure_decrease_active = TRUE
|
|
|
|
|
else if(environment == KA_ENVIRO_TYPE_HOT)
|
|
|
|
|
if(!virgotwo_environment_check(get_turf(src)))
|
|
|
|
|
name = "weakened [name]"
|
|
|
|
|
damage = damage * pressure_decrease
|
|
|
|
|
pressure_decrease_active = TRUE
|
|
|
|
|
return ..()
|
|
|
|
|
|
|
|
|
|
/obj/item/projectile/kinetic/on_range()
|
|
|
|
|
strike_thing()
|
|
|
|
|
..()
|
|
|
|
|
|
|
|
|
|
/obj/item/projectile/kinetic/on_hit(atom/target)
|
|
|
|
|
strike_thing(target)
|
|
|
|
|
. = ..()
|
|
|
|
|
|
|
|
|
|
/obj/item/projectile/kinetic/on_impact(atom/A)
|
|
|
|
|
. = ..()
|
|
|
|
|
strike_thing(A)
|
|
|
|
|
|
|
|
|
|
/obj/item/projectile/kinetic/proc/strike_thing(atom/target)
|
|
|
|
|
if(!pressure_decrease_active)
|
|
|
|
|
if(environment == KA_ENVIRO_TYPE_COLD)
|
|
|
|
|
if(!lavaland_environment_check(get_turf(src)))
|
|
|
|
|
name = "weakened [name]"
|
|
|
|
|
damage = damage * pressure_decrease
|
|
|
|
|
pressure_decrease_active = TRUE
|
|
|
|
|
else if(environment == KA_ENVIRO_TYPE_HOT)
|
|
|
|
|
if(!virgotwo_environment_check(get_turf(src)))
|
|
|
|
|
name = "weakened [name]"
|
|
|
|
|
damage = damage * pressure_decrease
|
|
|
|
|
pressure_decrease_active = TRUE
|
|
|
|
|
var/turf/target_turf = get_turf(target)
|
|
|
|
|
if(!target_turf)
|
|
|
|
|
target_turf = get_turf(src)
|
|
|
|
|
if(istype(target_turf, /turf/simulated/mineral))
|
|
|
|
|
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)
|
|
|
|
|
M.projectile_strike_predamage(src, target_turf, target, kinetic_gun)
|
|
|
|
|
for(var/obj/item/borg/upgrade/modkit/M in mods)
|
|
|
|
|
M.projectile_strike(src, target_turf, target, kinetic_gun)
|
|
|
|
|
if(ismineralturf(target_turf))
|
|
|
|
|
var/turf/simulated/mineral/M = target_turf
|
|
|
|
|
M.GetDrilled()
|
|
|
|
|
M.GetDrilled(TRUE)
|
|
|
|
|
var/obj/effect/temp_visual/kinetic_blast/K = new /obj/effect/temp_visual/kinetic_blast(target_turf)
|
|
|
|
|
K.color = color
|
|
|
|
|
for(var/type in hit_overlays)
|
|
|
|
|
new type(target_turf)
|
|
|
|
|
if(turf_aoe)
|
|
|
|
|
for(var/T in RANGE_TURFS(1, target_turf) - target_turf)
|
|
|
|
|
if(istype(T, /turf/simulated/mineral))
|
|
|
|
|
var/turf/simulated/mineral/M = T
|
|
|
|
|
M.GetDrilled()
|
|
|
|
|
if(mob_aoe)
|
|
|
|
|
for(var/mob/living/L in range(1, target_turf) - firer - target)
|
|
|
|
|
var/armor = L.run_armor_check(def_zone, check_armour)
|
|
|
|
|
L.apply_damage(damage*mob_aoe, damage_type, def_zone, armor)
|
|
|
|
|
to_chat(L, "<span class='userdanger'>You're struck by a [name]!</span>")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Modkits
|
|
|
|
|
/obj/item/borg/upgrade/modkit
|
|
|
|
|
name = "modification kit"
|
|
|
|
|
name = "kinetic accelerator modification kit"
|
|
|
|
|
desc = "An upgrade for kinetic accelerators."
|
|
|
|
|
icon = 'icons/obj/objects_vr.dmi'
|
|
|
|
|
icon_state = "modkit"
|
|
|
|
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 4)
|
|
|
|
|
w_class = ITEMSIZE_SMALL
|
|
|
|
|
require_module = 1
|
|
|
|
|
// var/module_type = /obj/item/robot_module/miner
|
|
|
|
|
usesound = 'sound/items/Screwdriver.ogg'
|
|
|
|
|
// module_type = list(/obj/item/robot_module/miner)
|
|
|
|
|
var/denied_type = null
|
|
|
|
|
var/maximum_of_type = 1
|
|
|
|
|
var/cost = 30
|
|
|
|
|
var/modifier = 1 //For use in any mod kit that has numerical modifiers
|
|
|
|
|
var/minebot_upgrade = TRUE
|
|
|
|
|
var/minebot_exclusive = FALSE
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/examine(mob/user)
|
|
|
|
|
. = ..()
|
|
|
|
|
if(Adjacent(user))
|
|
|
|
|
. += "<span class='notice'>Occupies <b>[cost]%</b> of mod capacity.</span>"
|
|
|
|
|
. += "<span class='notice'>Occupies <b>[cost]%</b> of mod capacity.</span>"
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user)
|
|
|
|
|
if(istype(A, /obj/item/weapon/gun/energy/kinetic_accelerator) && !issilicon(user))
|
|
|
|
|
if(istype(A, /obj/item/weapon/gun/energy/kinetic_accelerator))
|
|
|
|
|
install(A, user)
|
|
|
|
|
else
|
|
|
|
|
..()
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/action(mob/living/silicon/robot/R)
|
|
|
|
|
if(..())
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
/obj/item/borg/upgrade/modkit/afterInstall(mob/living/silicon/robot/R)
|
|
|
|
|
for(var/obj/item/weapon/gun/energy/kinetic_accelerator/H in R.module.modules)
|
|
|
|
|
return install(H, usr)
|
|
|
|
|
if(install(H, R)) //It worked
|
|
|
|
|
return
|
|
|
|
|
to_chat(R, "<span class='alert'>Upgrade error - Aborting Kinetic Accelerator linking.</span>") //No applicable KA found, insufficient capacity, or some other problem.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/proc/install(obj/item/weapon/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
|
|
|
|
|
// if(minebot_upgrade)
|
|
|
|
|
// if(minebot_exclusive && !istype(KA.loc, /mob/living/simple_animal/hostile/mining_drone))
|
|
|
|
|
// to_chat(user, "<span class='notice'>The modkit you're trying to install is only rated for minebot use.</span>")
|
|
|
|
|
// return FALSE
|
|
|
|
|
// else if(istype(KA.loc, /mob/living/simple_animal/hostile/mining_drone))
|
|
|
|
|
// to_chat(user, "<span class='notice'>The modkit you're trying to install is not rated for minebot use.</span>")
|
|
|
|
|
// return FALSE
|
|
|
|
|
if(denied_type)
|
|
|
|
|
var/number_of_denied = 0
|
|
|
|
|
for(var/obj/item/borg/upgrade/modkit/M as anything in KA.get_modkits())
|
|
|
|
|
for(var/A in KA.get_modkits())
|
|
|
|
|
var/obj/item/borg/upgrade/modkit/M = A
|
|
|
|
|
if(istype(M, denied_type))
|
|
|
|
|
number_of_denied++
|
|
|
|
|
if(number_of_denied >= maximum_of_type)
|
|
|
|
@@ -190,10 +374,11 @@
|
|
|
|
|
break
|
|
|
|
|
if(KA.get_remaining_mod_capacity() >= cost)
|
|
|
|
|
if(.)
|
|
|
|
|
user.drop_from_inventory(src, KA)
|
|
|
|
|
// if(!user.transferItemToLoc(src, KA))
|
|
|
|
|
// return FALSE
|
|
|
|
|
to_chat(user, "<span class='notice'>You install the modkit.</span>")
|
|
|
|
|
playsound(src, usesound, 100, 1)
|
|
|
|
|
user.unEquip(src)
|
|
|
|
|
forceMove(KA)
|
|
|
|
|
playsound(loc, 'sound/items/screwdriver.ogg', 100, 1)
|
|
|
|
|
KA.modkits += src
|
|
|
|
|
else
|
|
|
|
|
to_chat(user, "<span class='notice'>The modkit you're trying to install would conflict with an already installed modkit. Use a crowbar to remove existing modkits.</span>")
|
|
|
|
@@ -201,19 +386,26 @@
|
|
|
|
|
to_chat(user, "<span class='notice'>You don't have room(<b>[KA.get_remaining_mod_capacity()]%</b> remaining, [cost]% needed) to install this modkit. Use a crowbar to remove existing modkits.</span>")
|
|
|
|
|
. = FALSE
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
|
|
|
|
|
forceMove(get_turf(KA))
|
|
|
|
|
/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/weapon/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/item/projectile/kinetic/K)
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
//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/item/projectile/kinetic/K, atom/target, obj/item/weapon/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/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/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/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA)
|
|
|
|
|
|
|
|
|
|
//Range
|
|
|
|
|
/obj/item/borg/upgrade/modkit/range
|
|
|
|
|
name = "range increase"
|
|
|
|
|
desc = "Increases the range of a kinetic accelerator when installed."
|
|
|
|
|
modifier = 1
|
|
|
|
|
cost = 24 //so you can fit four plus a tracer cosmetic
|
|
|
|
|
cost = 25
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/item/projectile/kinetic/K)
|
|
|
|
|
K.range += modifier
|
|
|
|
@@ -229,54 +421,87 @@
|
|
|
|
|
K.damage += modifier
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// //Cooldown
|
|
|
|
|
// /obj/item/borg/upgrade/modkit/cooldown
|
|
|
|
|
// name = "cooldown decrease"
|
|
|
|
|
// desc = "Decreases the cooldown of a kinetic accelerator."
|
|
|
|
|
// modifier = 2.5
|
|
|
|
|
|
|
|
|
|
// /obj/item/borg/upgrade/modkit/cooldown/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA, mob/user)
|
|
|
|
|
// . = ..()
|
|
|
|
|
// if(.)
|
|
|
|
|
// KA.overheat_time -= modifier
|
|
|
|
|
|
|
|
|
|
// /obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
|
|
|
|
|
// KA.overheat_time += modifier
|
|
|
|
|
// ..()
|
|
|
|
|
|
|
|
|
|
//Cooldown
|
|
|
|
|
/obj/item/borg/upgrade/modkit/efficiency
|
|
|
|
|
name = "energy efficiency"
|
|
|
|
|
desc = "Decreases the energy use of a kinetic accelerator."
|
|
|
|
|
modifier = 20
|
|
|
|
|
/obj/item/borg/upgrade/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/efficiency/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA, mob/user)
|
|
|
|
|
/obj/item/borg/upgrade/modkit/cooldown/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA, mob/user)
|
|
|
|
|
. = ..()
|
|
|
|
|
if(.)
|
|
|
|
|
KA.charge_cost -= modifier
|
|
|
|
|
var/old = KA.overheat_time
|
|
|
|
|
KA.overheat_time = max(0, KA.overheat_time - modifier)
|
|
|
|
|
decreased = old - KA.overheat_time
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/efficiency/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
|
|
|
|
|
KA.charge_cost += modifier
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
|
|
|
|
|
KA.overheat_time += decreased
|
|
|
|
|
..()
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/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
|
|
|
|
|
modifier = 10
|
|
|
|
|
cost = 0
|
|
|
|
|
minebot_upgrade = TRUE
|
|
|
|
|
minebot_exclusive = TRUE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//AoE blasts
|
|
|
|
|
/obj/item/borg/upgrade/modkit/aoe
|
|
|
|
|
modifier = 0
|
|
|
|
|
var/turf_aoe = FALSE
|
|
|
|
|
var/stats_stolen = FALSE
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/aoe/install(obj/item/weapon/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
|
|
|
|
|
if(AOE.stats_stolen || AOE == src)
|
|
|
|
|
continue
|
|
|
|
|
modifier += AOE.modifier //take its modifiers
|
|
|
|
|
AOE.modifier = 0
|
|
|
|
|
turf_aoe += AOE.turf_aoe
|
|
|
|
|
AOE.turf_aoe = FALSE
|
|
|
|
|
AOE.stats_stolen = TRUE
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/aoe/uninstall(obj/item/weapon/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/item/projectile/kinetic/K)
|
|
|
|
|
K.name = "kinetic explosion"
|
|
|
|
|
if(!K.turf_aoe && !K.mob_aoe)
|
|
|
|
|
K.hit_overlays += /obj/effect/temp_visual/explosion/fast
|
|
|
|
|
K.mob_aoe += modifier
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA)
|
|
|
|
|
if(stats_stolen)
|
|
|
|
|
return
|
|
|
|
|
new /obj/effect/temp_visual/explosion/fast(target_turf)
|
|
|
|
|
if(turf_aoe)
|
|
|
|
|
for(var/T in RANGE_TURFS(1, target_turf) - target_turf)
|
|
|
|
|
if(ismineralturf(T))
|
|
|
|
|
var/turf/simulated/mineral/M = T
|
|
|
|
|
M.GetDrilled(TRUE)
|
|
|
|
|
if(modifier)
|
|
|
|
|
for(var/mob/living/L in range(1, target_turf) - K.firer - target)
|
|
|
|
|
var/armor = L.run_armor_check(K.def_zone, K.check_armour)
|
|
|
|
|
// var/armor = L.run_armor_check(K.def_zone, K.flag, null, null, K.armour_penetration)
|
|
|
|
|
L.apply_damage(K.damage*modifier, K.damage_type, K.def_zone, armor)
|
|
|
|
|
// L.apply_damage(K.damage*modifier, K.damage_type, K.def_zone, armor)
|
|
|
|
|
to_chat(L, "<span class='userdanger'>You're struck by a [K.name]!</span>")
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/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
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/aoe/turfs/modify_projectile(obj/item/projectile/kinetic/K)
|
|
|
|
|
..()
|
|
|
|
|
K.turf_aoe = TRUE
|
|
|
|
|
turf_aoe = TRUE
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/aoe/turfs/andmobs
|
|
|
|
|
name = "offensive mining explosion"
|
|
|
|
@@ -289,19 +514,150 @@
|
|
|
|
|
desc = "Causes the kinetic accelerator to damage mobs in an AoE."
|
|
|
|
|
modifier = 0.2
|
|
|
|
|
|
|
|
|
|
//Minebot passthrough
|
|
|
|
|
/obj/item/borg/upgrade/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
|
|
|
|
|
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
|
|
|
|
|
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/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA)
|
|
|
|
|
var/valid_repeat = FALSE
|
|
|
|
|
if(isliving(target))
|
|
|
|
|
var/mob/living/L = target
|
|
|
|
|
if(L.stat != DEAD)
|
|
|
|
|
valid_repeat = TRUE
|
|
|
|
|
if(ismineralturf(target_turf))
|
|
|
|
|
valid_repeat = TRUE
|
|
|
|
|
if(valid_repeat)
|
|
|
|
|
KA.overheat = FALSE
|
|
|
|
|
KA.attempt_reload(KA.overheat_time * 0.25) //If you hit, the cooldown drops to 0.75 seconds.
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
/obj/item/borg/upgrade/modkit/lifesteal
|
|
|
|
|
name = "lifesteal crystal"
|
|
|
|
|
desc = "Causes kinetic accelerator shots to slightly heal the firer on striking a living target."
|
|
|
|
|
icon_state = "modkit_crystal"
|
|
|
|
|
modifier = 2.5 //Not a very effective method of healing.
|
|
|
|
|
cost = 20
|
|
|
|
|
var/static/list/damage_heal_order = list(BRUTE, BURN, OXY)
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/item/projectile/kinetic/K, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA)
|
|
|
|
|
if(isliving(target) && isliving(K.firer))
|
|
|
|
|
var/mob/living/L = target
|
|
|
|
|
if(L.stat == DEAD)
|
|
|
|
|
return
|
|
|
|
|
L = K.firer
|
|
|
|
|
L.heal_ordered_damage(modifier, damage_heal_order)
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/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
|
|
|
|
|
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/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/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)
|
|
|
|
|
R.resonance_damage *= modifier
|
|
|
|
|
R.burst()
|
|
|
|
|
return
|
|
|
|
|
new /obj/effect/resonance(target_turf, K.firer, 30)
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
/obj/item/borg/upgrade/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
|
|
|
|
|
modifier = 1.25
|
|
|
|
|
cost = 30
|
|
|
|
|
var/maximum_bounty = 25
|
|
|
|
|
var/list/bounties_reaped = list()
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/bounty/projectile_prehit(obj/item/projectile/kinetic/K, atom/target, obj/item/weapon/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)
|
|
|
|
|
for(var/i in existing_marks)
|
|
|
|
|
var/datum/status_effect/syphon_mark/SM = i
|
|
|
|
|
if(SM.reward_target == src) //we want to allow multiple people with bounty modkits to use them, but we need to replace our own marks so we don't multi-reward
|
|
|
|
|
SM.reward_target = null
|
|
|
|
|
qdel(SM)
|
|
|
|
|
L.apply_status_effect(STATUS_EFFECT_SYPHONMARK, src)
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/bounty/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA)
|
|
|
|
|
if(isliving(target))
|
|
|
|
|
var/mob/living/L = target
|
|
|
|
|
if(bounties_reaped[L.type])
|
|
|
|
|
var/kill_modifier = 1
|
|
|
|
|
if(K.pressure_decrease_active)
|
|
|
|
|
kill_modifier *= K.pressure_decrease
|
|
|
|
|
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)
|
|
|
|
|
var/bonus_mod = 1
|
|
|
|
|
if(ismegafauna(L)) //megafauna reward
|
|
|
|
|
bonus_mod = 4
|
|
|
|
|
if(!bounties_reaped[L.type])
|
|
|
|
|
bounties_reaped[L.type] = min(modifier * bonus_mod, maximum_bounty)
|
|
|
|
|
else
|
|
|
|
|
bounties_reaped[L.type] = min(bounties_reaped[L.type] + (modifier * bonus_mod), maximum_bounty)
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
//Indoors
|
|
|
|
|
/obj/item/borg/upgrade/modkit/indoors
|
|
|
|
|
name = "decrease pressure penalty"
|
|
|
|
|
desc = "Increases the damage a kinetic accelerator does in a high pressure environment."
|
|
|
|
|
desc = "A remarkably illegal modification kit that increases the damage a kinetic accelerator does in pressurized environments."
|
|
|
|
|
modifier = 2
|
|
|
|
|
denied_type = /obj/item/borg/upgrade/modkit/indoors
|
|
|
|
|
maximum_of_type = 2
|
|
|
|
|
cost = 40
|
|
|
|
|
cost = 35
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/indoors/modify_projectile(obj/item/projectile/kinetic/K)
|
|
|
|
|
K.pressure_decrease *= modifier
|
|
|
|
|
|
|
|
|
|
// Atmospheric
|
|
|
|
|
/obj/item/borg/upgrade/modkit/heater
|
|
|
|
|
name = "temperature modulator"
|
|
|
|
|
desc = "A remarkably unusual modification kit that makes kinetic accelerators more usable in hot, overpressurized environments, \
|
|
|
|
|
in exchange for making them weak elsewhere, like the cold or in space."
|
|
|
|
|
denied_type = /obj/item/borg/upgrade/modkit/indoors
|
|
|
|
|
maximum_of_type = 1
|
|
|
|
|
cost = 30
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/heater/modify_projectile(obj/item/projectile/kinetic/K)
|
|
|
|
|
K.environment = KA_ENVIRO_TYPE_HOT
|
|
|
|
|
|
|
|
|
|
//Trigger Guard
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
/obj/item/borg/upgrade/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
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/trigger_guard/install(obj/item/weapon/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/weapon/gun/energy/kinetic_accelerator/KA)
|
|
|
|
|
KA.trigger_guard = TRIGGER_GUARD_NORMAL
|
|
|
|
|
..()
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
//Cosmetic
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/chassis_mod
|
|
|
|
@@ -342,7 +698,7 @@
|
|
|
|
|
|
|
|
|
|
/obj/item/borg/upgrade/modkit/tracer/adjustable
|
|
|
|
|
name = "adjustable tracer bolts"
|
|
|
|
|
desc = "Causes kinetic accelerator bolts to have a adjustably-colored tracer trail and explosion. Use in-hand to change color."
|
|
|
|
|
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)
|
|
|
|
|
bolt_color = input(user,"Choose Color") as color
|
|
|
|
|
bolt_color = input(user,"","Choose Color",bolt_color) as color|null
|
|
|
|
|