Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into tgui-alerts-and-what-not
This commit is contained in:
@@ -269,6 +269,10 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
. = ..()
|
||||
AddElement(/datum/element/empprotection, EMP_PROTECT_WIRES)
|
||||
|
||||
/obj/item/radio/headset/silicon/pai/emp_act(severity)
|
||||
. = ..()
|
||||
return EMP_PROTECT_SELF
|
||||
|
||||
/obj/item/radio/headset/silicon/ai
|
||||
name = "\proper Integrated Subspace Transceiver "
|
||||
keyslot2 = new /obj/item/encryptionkey/ai
|
||||
|
||||
@@ -769,12 +769,33 @@
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
. = ..()
|
||||
|
||||
/obj/item/nullrod/tribal_knife/pickup(mob/user)
|
||||
. = ..()
|
||||
reroll()
|
||||
|
||||
/obj/item/nullrod/tribal_knife/process()
|
||||
slowdown = rand(-2, 2)
|
||||
reroll()
|
||||
|
||||
/obj/item/nullrod/tribal_knife/proc/reroll()
|
||||
if(iscarbon(loc))
|
||||
var/mob/living/carbon/wielder = loc
|
||||
if(wielder.is_holding(src))
|
||||
wielder.update_equipment_speed_mods()
|
||||
var/current_tiles = 10 / max(wielder.cached_multiplicative_slowdown, world.tick_lag)
|
||||
var/datum/movespeed_modifier/M = wielder.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/item/arrhythmic_knife, update = FALSE, multiplicative_slowdown = pick(-10, -10, 0, (current_tiles - 2) / 10, (current_tiles - 4) / 10))
|
||||
M.max_tiles_per_second_boost = pick(3, 6)
|
||||
wielder.update_movespeed() // update movespeed manually
|
||||
|
||||
/obj/item/nullrod/tribal_knife/dropped(mob/user)
|
||||
user.remove_movespeed_modifier(/datum/movespeed_modifier/item/arrhythmic_knife)
|
||||
return ..()
|
||||
|
||||
/datum/movespeed_modifier/item/arrhythmic_knife
|
||||
variable = TRUE
|
||||
flags = IGNORE_NOSLOW
|
||||
movetypes = ~FLOATING
|
||||
priority = 750
|
||||
absolute_max_tiles_per_second = 20
|
||||
max_tiles_per_second_boost = 6
|
||||
|
||||
/obj/item/nullrod/pitchfork
|
||||
icon_state = "pitchfork0"
|
||||
|
||||
@@ -457,6 +457,10 @@ as performing this in action() will cause the upgrade to end up in the borg inst
|
||||
desc = "An upgrade to a cyborg's hypospray, allowing it to \
|
||||
pierce armor and thick material."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
module_type = list(/obj/item/robot_module/medical,
|
||||
/obj/item/robot_module/syndicate_medical)
|
||||
var/list/additional_reagents = list()
|
||||
module_flags = BORG_MODULE_MEDICAL
|
||||
|
||||
/obj/item/borg/upgrade/piercing_hypospray/action(mob/living/silicon/robot/R, user = usr)
|
||||
. = ..()
|
||||
@@ -514,6 +518,7 @@ as performing this in action() will cause the upgrade to end up in the borg inst
|
||||
module_type = list(
|
||||
/obj/item/robot_module/medical,
|
||||
/obj/item/robot_module/syndicate_medical)
|
||||
module_flags = BORG_MODULE_MEDICAL
|
||||
|
||||
/obj/item/borg/upgrade/advhealth/action(mob/living/silicon/robot/R, user = usr)
|
||||
. = ..()
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
animate(effect, alpha = 0, pixel_x = px * 1.5, pixel_y = py * 1.5, time = 3, flags = ANIMATION_PARALLEL | ANIMATION_RELATIVE)
|
||||
|
||||
/obj/item/shield/proc/bash_target(mob/living/user, mob/living/target, bashdir, harmful)
|
||||
if(!(target.status_flags & CANKNOCKDOWN) || HAS_TRAIT(src, TRAIT_STUNIMMUNE)) // should probably add stun absorption check at some point I guess..
|
||||
if(!(HAS_TRAIT(target, CANKNOCKDOWN)) || HAS_TRAIT(target, TRAIT_STUNIMMUNE)) // should probably add stun absorption check at some point I guess..
|
||||
// unified stun absorption system when lol
|
||||
target.visible_message("<span class='warning'>[user] slams [target] with [src], but [target] doesn't falter!</span>", "<span class='userdanger'>[user] slams you with [src], but it barely fazes you!</span>")
|
||||
return FALSE
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
|
||||
attack_speed = CLICK_CD_MELEE
|
||||
|
||||
var/stamina_loss_amount = 40
|
||||
var/stamina_loss_amount = 35
|
||||
var/turned_on = FALSE
|
||||
var/armor_pen = 100
|
||||
var/knockdown = TRUE
|
||||
/// block percent needed to prevent knockdown/disarm
|
||||
var/block_percent_to_counter = 50
|
||||
@@ -25,8 +26,8 @@
|
||||
var/hitcost = 750
|
||||
var/throw_hit_chance = 35
|
||||
var/preload_cell_type //if not empty the baton starts with this type of cell
|
||||
var/cooldown_duration = 3.5 SECONDS //How long our baton rightclick goes on cooldown for after applying a knockdown
|
||||
var/status_duration = 5 SECONDS //how long our status effects last for otherwise
|
||||
var/cooldown_duration = 2.5 SECONDS //How long our baton rightclick goes on cooldown for after applying a knockdown
|
||||
var/status_duration = 3 SECONDS //how long our status effects last for otherwise
|
||||
COOLDOWN_DECLARE(shove_cooldown)
|
||||
|
||||
/obj/item/melee/baton/examine(mob/user)
|
||||
@@ -80,16 +81,6 @@
|
||||
//we're below minimum, turn off
|
||||
switch_status(FALSE)
|
||||
|
||||
///Check for our cell to determine how much penetration our weapon does.
|
||||
/obj/item/melee/baton/proc/get_cell_zap_pen()
|
||||
var/obj/item/stock_parts/cell/copper_top = get_cell()
|
||||
if(copper_top)
|
||||
var/chargepower = copper_top.maxcharge
|
||||
var/zap_penetration = (chargepower/1000) //This is our effective penetration. Every 1000 max charge, we get 1 pen power. A high capacity cell is equal to 10 armor pen, as an example.
|
||||
return zap_penetration
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/melee/baton/proc/switch_status(new_status = FALSE, silent = FALSE)
|
||||
if(turned_on != new_status)
|
||||
turned_on = new_status
|
||||
@@ -198,7 +189,7 @@
|
||||
return FALSE
|
||||
var/final_stamina_loss_amount = stamina_loss_amount //Our stunning power for the baton
|
||||
var/shoved = FALSE //Did we succeed on knocking our target over?
|
||||
var/zap_penetration = get_cell_zap_pen() //Find out what kind of cell we have, and calculating the resultant armor pen we get from it
|
||||
var/zap_penetration = armor_pen
|
||||
var/zap_block = L.run_armor_check(BODY_ZONE_CHEST, "melee", null, null, zap_penetration) //armor check, including calculation for armor penetration, for our attack
|
||||
final_stamina_loss_amount = block_calculate_resultant_damage(final_stamina_loss_amount, return_list)
|
||||
|
||||
@@ -223,7 +214,7 @@
|
||||
|
||||
if(shoving && COOLDOWN_FINISHED(src, shove_cooldown) && !HAS_TRAIT(L, TRAIT_IWASBATONED)) //Rightclicking applies a knockdown, but only once every couple of seconds, based on the cooldown_duration var. If they were recently knocked down, they can't be knocked down again by a baton.
|
||||
L.DefaultCombatKnockdown(50, override_stamdmg = 0)
|
||||
L.apply_status_effect(STATUS_EFFECT_TASED_WEAK, status_duration) //Even if they shove themselves up, they're still slowed.
|
||||
L.apply_status_effect(STATUS_EFFECT_TASED_WEAK_NODMG, status_duration) //Even if they shove themselves up, they're still slowed.
|
||||
L.apply_status_effect(STATUS_EFFECT_OFF_BALANCE, status_duration) //They're very likely to drop items if shoved briefly after a knockdown.
|
||||
shoved = TRUE
|
||||
COOLDOWN_START(src, shove_cooldown, cooldown_duration)
|
||||
@@ -333,7 +324,8 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
force = 3
|
||||
throwforce = 5
|
||||
stamina_loss_amount = 25
|
||||
stamina_loss_amount = 30
|
||||
armor_pen = 35
|
||||
hitcost = 1000
|
||||
throw_hit_chance = 10
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
|
||||
Reference in New Issue
Block a user