From 906e8638050ce6634d4589c98c07a195c965e3e4 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 5 Jun 2018 23:03:36 -0700 Subject: [PATCH 1/5] Balancing --- .../code/datums/status_effects/debuffs.dm | 14 +++-- modular_citadel/datums/components/riding.dm | 29 ++++++++++ .../game/objects/items/melee/misc.dm | 56 +++++++++++++++++++ .../modules/mob/living/status_procs.dm | 10 ++++ modular_citadel/modules/vehicles/secway.dm | 54 ++++++++++++++++++ tgstation.dme | 4 ++ 6 files changed, 161 insertions(+), 6 deletions(-) create mode 100644 modular_citadel/datums/components/riding.dm create mode 100644 modular_citadel/game/objects/items/melee/misc.dm create mode 100644 modular_citadel/modules/mob/living/status_procs.dm create mode 100644 modular_citadel/modules/vehicles/secway.dm diff --git a/modular_citadel/code/datums/status_effects/debuffs.dm b/modular_citadel/code/datums/status_effects/debuffs.dm index 37669fe94c..4c201861a2 100644 --- a/modular_citadel/code/datums/status_effects/debuffs.dm +++ b/modular_citadel/code/datums/status_effects/debuffs.dm @@ -1,11 +1,13 @@ -/datum/status_effect/incapacitating/knockdown/on_creation(mob/living/new_owner, set_duration, updating_canmove) - if(iscarbon(new_owner) && isnum(set_duration)) +/datum/status_effect/incapacitating/knockdown/on_creation(mob/living/new_owner, set_duration, updating_canmove, override_duration, override_stam) + if(iscarbon(new_owner) && (isnum(set_duration) || isnum(override_duration))) new_owner.resting = TRUE - new_owner.adjustStaminaLoss(set_duration*0.25) - if(set_duration > 80) + new_owner.adjustStaminaLoss(isnull(override_stam)? set_duration*0.25 : override_stam) + if(isnull(override_duration) && (set_duration > 80)) set_duration = set_duration*0.15 - . = ..() - return + return ..() + else if(!isnull(override_duration)) + set_duration = override_duration + return ..() else if(updating_canmove) new_owner.update_canmove() qdel(src) diff --git a/modular_citadel/datums/components/riding.dm b/modular_citadel/datums/components/riding.dm new file mode 100644 index 0000000000..f59ad5a3d3 --- /dev/null +++ b/modular_citadel/datums/components/riding.dm @@ -0,0 +1,29 @@ +/datum/component/riding + var/last_vehicle_move = 0 + +/datum/component/riding/handle_ride(mob/user, direction) + var/atom/movable/AM = parent + if(user.incapacitated()) + Unbuckle(user) + return + + if(world.time < last_vehicle_move + vehicle_move_delay) + return + last_vehicle_move = world.time + + if(keycheck(user)) + var/turf/next = get_step(AM, direction) + var/turf/current = get_turf(AM) + if(!istype(next) || !istype(current)) + return //not happening. + if(!turf_check(next, current)) + to_chat(user, "Your \the [AM] can not go onto [next]!") + return + if(!Process_Spacemove(direction) || !isturf(AM.loc)) + return + step(AM, direction) + + handle_vehicle_layer() + handle_vehicle_offsets() + else + to_chat(user, "You'll need the keys in one of your hands to [drive_verb] [AM].") diff --git a/modular_citadel/game/objects/items/melee/misc.dm b/modular_citadel/game/objects/items/melee/misc.dm new file mode 100644 index 0000000000..1192793650 --- /dev/null +++ b/modular_citadel/game/objects/items/melee/misc.dm @@ -0,0 +1,56 @@ +/obj/item/melee/classic_baton + var/last_hit = 0 + var/stun_stam_cost_coeff = 1.25 + var/hardstun_ds = 1 + var/softstun_ds = 0 + var/stam_dmg = 25 + cooldown = 20 + +/obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user) + if(!on) + return ..() + + if(user.getStaminaLoss() >= STAMINA_SOFTCRIT)//CIT CHANGE - makes batons unusuable in stamina softcrit + to_chat(user, "You're too exhausted for that.")//CIT CHANGE - ditto + return //CIT CHANGE - ditto + + add_fingerprint(user) + if((user.has_trait(TRAIT_CLUMSY)) && prob(50)) + to_chat(user, "You club yourself over the head.") + user.Knockdown(60 * force) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) + else + user.take_bodypart_damage(2*force) + return + if(iscyborg(target)) + ..() + return + if(!isliving(target)) + return + if (user.a_intent == INTENT_HARM) + if(!..()) + return + if(!iscyborg(target)) + return + else + if(last_hit + cooldown < world.time) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) + return + if(check_martial_counter(H, user)) + return + playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1) + target.Knockdown(softstun_ds, TRUE, FALSE, hardstun_ds, stam_dmg) + add_logs(user, target, "stunned", src) + src.add_fingerprint(user) + target.visible_message("[user] has knocked down [target] with [src]!", \ + "[user] has knocked down [target] with [src]!") + if(!iscarbon(user)) + target.LAssailant = null + else + target.LAssailant = user + last_hit = world.time + user.adjustStaminaLossBuffered(getweight())//CIT CHANGE - makes swinging batons cost stamina diff --git a/modular_citadel/modules/mob/living/status_procs.dm b/modular_citadel/modules/mob/living/status_procs.dm new file mode 100644 index 0000000000..f646af3286 --- /dev/null +++ b/modular_citadel/modules/mob/living/status_procs.dm @@ -0,0 +1,10 @@ +/mob/living/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) //Can't go below remaining duration + if(((status_flags & CANKNOCKDOWN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canknockdown) + if(absorb_stun(isnull(override_hardstun)? amount : override_hardstun, ignore_canknockdown)) + return + var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() + if(K) + K.duration = max(world.time + (isnull(override_hardstun)? amount : override_hardstun), K.duration) + else if((amount || override_hardstun) > 0) + K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating, override_hardstun, override_stamdmg) + return K diff --git a/modular_citadel/modules/vehicles/secway.dm b/modular_citadel/modules/vehicles/secway.dm new file mode 100644 index 0000000000..85c1de15e2 --- /dev/null +++ b/modular_citadel/modules/vehicles/secway.dm @@ -0,0 +1,54 @@ +/obj/vehicle/ridden/secway + var/chargemax = 150 + var/chargerate = 0.35 + var/charge = 150 + var/chargespeed = 1 + var/normalspeed = 2 + var/last_tick = 0 + var/list/progressbars_by_rider = list() + +/obj/vehicle/ridden/secway/Initialize() + . = ..() + START_PROCESSING(SSfastprocess, src) + +/obj/vehicle/ridden/secway/process() + var/diff = world.time - last_tick + var/regen = chargerate * diff + charge = CLAMP(charge + regen, 0, chargemax) + last_tick = world.time + +/obj/vehicle/ridden/secway/relaymove(mob/user, direction) + var/new_speed = normalspeed + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.sprinting && charge) + charge-- + new_speed = chargespeed + GET_COMPONENT(D, /datum/component/riding) + D.vehicle_move_delay = new_speed + for(var/i in progressbars_by_rider) + var/datum/progressbar/B = progressbars_by_rider[i] + B.update(charge) + return ..() + +/obj/vehicle/ridden/secway/buckle_mob(mob/living/M, force, check_loc) + . = ..(M, force, check_loc) + if(.) + if(progressbars_by_rider[M]) + qdel(progressbars_by_rider[M]) + var/datum/progressbar/D = new(M, chargemax, src) + D.update(charge) + progressbars_by_rider[M] = D + +/obj/vehicle/ridden/secway/unbuckle_mob(mob/living/M, force) + . = ..(M, force) + if(.) + qdel(progressbars_by_rider[M]) + progressbars_by_rider -= M + +/obj/vehicle/ridden/secway/Destroy() + for(var/i in progressbars_by_rider) + qdel(progressbars_by_rider[i]) + progressbars_by_rider.Cut() + STOP_PROCESSING(SSfastprocess, src) + return ..() \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index af0fb84472..312fc2e8c4 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2846,5 +2846,9 @@ #include "modular_citadel\code\modules\vore\eating\vore_vr.dm" #include "modular_citadel\code\modules\vore\eating\voreitems.dm" #include "modular_citadel\code\modules\vore\eating\vorepanel_vr.dm" +#include "modular_citadel\datums\components\riding.dm" +#include "modular_citadel\game\objects\items\melee\misc.dm" #include "modular_citadel\interface\skin.dmf" +#include "modular_citadel\modules\mob\living\status_procs.dm" +#include "modular_citadel\modules\vehicles\secway.dm" // END_INCLUDE From b3672bc3eb5c7a9fa2966509fd27712d9f7ca2e7 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 12 Jun 2018 14:20:48 -0700 Subject: [PATCH 2/5] Delete riding.dm --- modular_citadel/datums/components/riding.dm | 29 --------------------- 1 file changed, 29 deletions(-) delete mode 100644 modular_citadel/datums/components/riding.dm diff --git a/modular_citadel/datums/components/riding.dm b/modular_citadel/datums/components/riding.dm deleted file mode 100644 index f59ad5a3d3..0000000000 --- a/modular_citadel/datums/components/riding.dm +++ /dev/null @@ -1,29 +0,0 @@ -/datum/component/riding - var/last_vehicle_move = 0 - -/datum/component/riding/handle_ride(mob/user, direction) - var/atom/movable/AM = parent - if(user.incapacitated()) - Unbuckle(user) - return - - if(world.time < last_vehicle_move + vehicle_move_delay) - return - last_vehicle_move = world.time - - if(keycheck(user)) - var/turf/next = get_step(AM, direction) - var/turf/current = get_turf(AM) - if(!istype(next) || !istype(current)) - return //not happening. - if(!turf_check(next, current)) - to_chat(user, "Your \the [AM] can not go onto [next]!") - return - if(!Process_Spacemove(direction) || !isturf(AM.loc)) - return - step(AM, direction) - - handle_vehicle_layer() - handle_vehicle_offsets() - else - to_chat(user, "You'll need the keys in one of your hands to [drive_verb] [AM].") From 856d2af132cdc55f8081622ad03aea5759c1523b Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 12 Jun 2018 14:21:33 -0700 Subject: [PATCH 3/5] Update tgstation.dme --- tgstation.dme | 1 - 1 file changed, 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index 312fc2e8c4..55826b234a 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2846,7 +2846,6 @@ #include "modular_citadel\code\modules\vore\eating\vore_vr.dm" #include "modular_citadel\code\modules\vore\eating\voreitems.dm" #include "modular_citadel\code\modules\vore\eating\vorepanel_vr.dm" -#include "modular_citadel\datums\components\riding.dm" #include "modular_citadel\game\objects\items\melee\misc.dm" #include "modular_citadel\interface\skin.dmf" #include "modular_citadel\modules\mob\living\status_procs.dm" From 53e9725ec6054e8a75ee9a0f613cf0281a0302da Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 20 Jun 2018 01:26:48 -0700 Subject: [PATCH 4/5] not enough we can nerf it if necessary --- modular_citadel/game/objects/items/melee/misc.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/game/objects/items/melee/misc.dm b/modular_citadel/game/objects/items/melee/misc.dm index 1192793650..e68b33cc7c 100644 --- a/modular_citadel/game/objects/items/melee/misc.dm +++ b/modular_citadel/game/objects/items/melee/misc.dm @@ -3,7 +3,7 @@ var/stun_stam_cost_coeff = 1.25 var/hardstun_ds = 1 var/softstun_ds = 0 - var/stam_dmg = 25 + var/stam_dmg = 50 cooldown = 20 /obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user) From 0b8e72b19bd67c46ce791b31db90790c8294e2c0 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 10 Jul 2018 05:58:44 -0700 Subject: [PATCH 5/5] nerf 50-->40 --- modular_citadel/game/objects/items/melee/misc.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/game/objects/items/melee/misc.dm b/modular_citadel/game/objects/items/melee/misc.dm index e68b33cc7c..e6dbf14c0d 100644 --- a/modular_citadel/game/objects/items/melee/misc.dm +++ b/modular_citadel/game/objects/items/melee/misc.dm @@ -3,7 +3,7 @@ var/stun_stam_cost_coeff = 1.25 var/hardstun_ds = 1 var/softstun_ds = 0 - var/stam_dmg = 50 + var/stam_dmg = 40 cooldown = 20 /obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user)