mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 01:34:01 +00:00
## About The Pull Request Lil cleanup/tweak I couldn't do in the main PR because it conflicted before and i forgot after. Yes this works with overrides that don't have the arg, yes I tested it. ## Why It's Good For The Game Don't run armor code thrice please thank you ## Changelog 🆑 code: Projectile impacts no longer fetch mobs' armor values thrice /🆑
106 lines
3.9 KiB
Plaintext
106 lines
3.9 KiB
Plaintext
|
|
/obj/vehicle/ridden/secway
|
|
name = "secway"
|
|
desc = "A brave security cyborg gave its life to help you look like a complete tool."
|
|
icon_state = "secway"
|
|
max_integrity = 60
|
|
armor_type = /datum/armor/ridden_secway
|
|
key_type = /obj/item/key/security
|
|
integrity_failure = 0.5
|
|
|
|
///This stores a banana that, when used on the secway, prevents the vehicle from moving until it is removed.
|
|
var/obj/item/food/grown/banana/eddie_murphy
|
|
|
|
/datum/armor/ridden_secway
|
|
melee = 10
|
|
laser = 10
|
|
fire = 60
|
|
acid = 60
|
|
|
|
/obj/vehicle/ridden/secway/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/ridable, /datum/component/riding/vehicle/secway)
|
|
|
|
/obj/vehicle/ridden/secway/atom_break()
|
|
START_PROCESSING(SSobj, src)
|
|
return ..()
|
|
|
|
/obj/vehicle/ridden/secway/process(seconds_per_tick)
|
|
if(atom_integrity >= integrity_failure * max_integrity)
|
|
return PROCESS_KILL
|
|
if(SPT_PROB(10, seconds_per_tick))
|
|
return
|
|
var/datum/effect_system/fluid_spread/smoke/smoke = new
|
|
smoke.set_up(0, holder = src, location = src)
|
|
smoke.start()
|
|
|
|
/obj/vehicle/ridden/secway/welder_act(mob/living/user, obj/item/W)
|
|
if(user.combat_mode)
|
|
return
|
|
. = TRUE
|
|
if(DOING_INTERACTION(user, src))
|
|
balloon_alert(user, "you're already repairing it!")
|
|
return
|
|
if(atom_integrity >= max_integrity)
|
|
balloon_alert(user, "it's not damaged!")
|
|
return
|
|
if(!W.tool_start_check(user, amount=1, heat_required = HIGH_TEMPERATURE_REQUIRED))
|
|
return
|
|
user.balloon_alert_to_viewers("started welding [src]", "started repairing [src]")
|
|
audible_message(span_hear("You hear welding."))
|
|
var/did_the_thing
|
|
while(atom_integrity < max_integrity)
|
|
if(W.use_tool(src, user, 2.5 SECONDS, volume=50))
|
|
did_the_thing = TRUE
|
|
atom_integrity += min(10, (max_integrity - atom_integrity))
|
|
audible_message(span_hear("You hear welding."))
|
|
else
|
|
break
|
|
if(did_the_thing)
|
|
user.balloon_alert_to_viewers("[(atom_integrity >= max_integrity) ? "fully" : "partially"] repaired [src]")
|
|
else
|
|
user.balloon_alert_to_viewers("stopped welding [src]", "interrupted the repair!")
|
|
|
|
/obj/vehicle/ridden/secway/attackby(obj/item/W, mob/living/user, params)
|
|
if(!istype(W, /obj/item/food/grown/banana))
|
|
return ..()
|
|
// ignore the occupants because they're presumably too distracted to notice the guy stuffing fruit into their vehicle's exhaust. do segways have exhausts? they do now!
|
|
user.visible_message(span_warning("[user] begins stuffing [W] into [src]'s tailpipe."), span_warning("You begin stuffing [W] into [src]'s tailpipe..."), ignored_mobs = occupants)
|
|
if(!do_after(user, 3 SECONDS, src))
|
|
return TRUE
|
|
if(user.transferItemToLoc(W, src))
|
|
user.visible_message(span_warning("[user] stuffs [W] into [src]'s tailpipe."), span_warning("You stuff [W] into [src]'s tailpipe."), ignored_mobs = occupants)
|
|
eddie_murphy = W
|
|
return TRUE
|
|
|
|
/obj/vehicle/ridden/secway/attack_hand(mob/living/user, list/modifiers)
|
|
if(!eddie_murphy)
|
|
return ..()
|
|
user.visible_message(span_warning("[user] begins cleaning [eddie_murphy] out of [src]."), span_warning("You begin cleaning [eddie_murphy] out of [src]..."))
|
|
if(!do_after(user, 6 SECONDS, target = src))
|
|
return ..()
|
|
user.visible_message(span_warning("[user] cleans [eddie_murphy] out of [src]."), span_warning("You manage to get [eddie_murphy] out of [src]."))
|
|
eddie_murphy.forceMove(drop_location())
|
|
eddie_murphy = null
|
|
|
|
/obj/vehicle/ridden/secway/examine(mob/user)
|
|
. = ..()
|
|
if(eddie_murphy)
|
|
. += span_warning("Something appears to be stuck in its exhaust...")
|
|
|
|
/obj/vehicle/ridden/secway/atom_destruction()
|
|
explosion(src, devastation_range = -1, light_impact_range = 2, flame_range = 3, flash_range = 4)
|
|
return ..()
|
|
|
|
/obj/vehicle/ridden/secway/Destroy()
|
|
STOP_PROCESSING(SSobj,src)
|
|
return ..()
|
|
|
|
//bullets will have a 60% chance to hit any riders
|
|
/obj/vehicle/ridden/secway/bullet_act(obj/projectile/proj)
|
|
if(!buckled_mobs || prob(40))
|
|
return ..()
|
|
for(var/mob/rider as anything in buckled_mobs)
|
|
return rider.projectile_hit(proj)
|
|
return ..()
|