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)