From d0876a94bea0208d952ac818cf249bd8bb9c332c Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 15 Dec 2023 18:31:01 +0700 Subject: [PATCH 1/9] add new car's sounds --- massmeta/sounds/vehicles/car_turn_signal.ogg | Bin 0 -> 8494 bytes massmeta/sounds/vehicles/gear_blyat.ogg | Bin 0 -> 35222 bytes massmeta/sounds/vehicles/gear_fault.ogg | Bin 0 -> 10336 bytes massmeta/sounds/vehicles/gear_fault2.ogg | Bin 0 -> 9493 bytes massmeta/sounds/vehicles/gear_fault3.ogg | Bin 0 -> 11301 bytes massmeta/sounds/vehicles/gear_nah.ogg | Bin 0 -> 21792 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 massmeta/sounds/vehicles/car_turn_signal.ogg create mode 100644 massmeta/sounds/vehicles/gear_blyat.ogg create mode 100644 massmeta/sounds/vehicles/gear_fault.ogg create mode 100644 massmeta/sounds/vehicles/gear_fault2.ogg create mode 100644 massmeta/sounds/vehicles/gear_fault3.ogg create mode 100644 massmeta/sounds/vehicles/gear_nah.ogg diff --git a/massmeta/sounds/vehicles/car_turn_signal.ogg b/massmeta/sounds/vehicles/car_turn_signal.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fd0fc639036f7e6070063956685ea1c9f1ad93a0 GIT binary patch literal 8494 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 literal 0 HcmV?d00001 diff --git a/massmeta/sounds/vehicles/gear_blyat.ogg b/massmeta/sounds/vehicles/gear_blyat.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9ce716f7c5a95ddb65c555150194ff97a6c6d17d GIT binary patch literal 35222 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 YxVx!|EPz1jbe6!G<^4Q8yc7xeAA?WLwg3PC literal 0 HcmV?d00001 diff --git a/massmeta/sounds/vehicles/gear_fault3.ogg b/massmeta/sounds/vehicles/gear_fault3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0adf9243daea579aff8c56259498f8b3efeb11cf GIT binary patch literal 11301 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 a@fmr)ik|Hmo`s6* Date: Fri, 15 Dec 2023 18:45:03 +0700 Subject: [PATCH 2/9] add new shaha files (only not modified files) --- .../code/modules/vehicles/cars/cheburek.dm | 157 ++++++++++++++++++ massmeta/icons/obj/toys/shaha.dmi | Bin 0 -> 12700 bytes 2 files changed, 157 insertions(+) create mode 100644 massmeta/code/modules/vehicles/cars/cheburek.dm create mode 100644 massmeta/icons/obj/toys/shaha.dmi diff --git a/massmeta/code/modules/vehicles/cars/cheburek.dm b/massmeta/code/modules/vehicles/cars/cheburek.dm new file mode 100644 index 0000000000000..171ccf9d8d360 --- /dev/null +++ b/massmeta/code/modules/vehicles/cars/cheburek.dm @@ -0,0 +1,157 @@ +/// Big 3x3 car only available to admins which can run people over +/obj/vehicle/sealed/car/cheburek + name = "Cheburek" + desc = "The Bucket with bolts and nuts" + icon = 'icons/obj/toys/shaha.dmi' + icon_state = "cheburek" // the name form gta 5 you know? + layer = LYING_MOB_LAYER + max_occupants = 4 + pixel_y = -48 + pixel_x = -48 + enter_delay = 0 SECONDS + escape_time = 0 SECONDS // Just get out dumbass + vehicle_move_delay = 0 + ///Determines whether we throw all things away when ramming them or just mobs, varedit only + var/crash_all = FALSE + /// New gopnik-functions + var/gopmode = FALSE + var/gopgear = 3 // nowadays it has 3(actually 4) five-speed gearbox, someday it had 5... and also R-ocket one + /// headlights of Cheburek, front white-yellow(Done but have some [BUG]'s to resolve!) and rear deep-red(TODO) + light_system = MOVABLE_LIGHT_DIRECTIONAL + light_range = 8 + light_power = 2 + light_on = FALSE + var/headlight_colors = COLOR_YELLOW + /// turns on and off sound and side lights on repeat + var/isturnsound_on = FALSE + +/obj/vehicle/sealed/car/cheburek/Initialize(mapload) + . = ..() + +/obj/vehicle/sealed/car/cheburek/process() + if(light_on) + set_light_color(headlight_colors) + +/obj/vehicle/sealed/car/cheburek/generate_actions() + . = ..() + initialize_controller_action_type(/datum/action/vehicle/sealed/horn, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/gop_headlights, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/gopnik, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/gop_turn, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/gopnik_gear_up, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/gopnik_gear_down, VEHICLE_CONTROL_DRIVE) + initialize_passenger_action_type(/datum/action/vehicle/sealed/blyat, VEHICLE_CONTROL_DRIVE) + +/obj/vehicle/sealed/car/cheburek/Bump(atom/bumped) + . = ..() + if(!bumped.density || occupant_amount() == 0) + return + + if(crash_all) + if(ismovable(bumped)) + var/atom/movable/flying_debris = bumped + flying_debris.throw_at(get_edge_target_turf(bumped, dir), 4, 3) + visible_message(span_danger("[src] crashes into [bumped]!")) + playsound(src, 'sound/effects/bang.ogg', 50, TRUE) + if(!ishuman(bumped) || gopgear < 2) // also on low gear you can't bump anyone + return + var/mob/living/carbon/human/rammed = bumped + rammed.Paralyze(100) + rammed.adjustStaminaLoss(30) + rammed.apply_damage(rand(15,30), BRUTE) + if(!crash_all) + rammed.throw_at(get_edge_target_turf(bumped, dir), 4, 3) + visible_message(span_danger("[src] crashes into [rammed]!")) + playsound(src, 'sound/effects/bang.ogg', 50, TRUE) + +/obj/vehicle/sealed/car/cheburek/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) + . = ..() + if(occupant_amount() == 0) + return + for(var/atom/future_statistic in range(2, src)) + if(future_statistic == src) + continue + if(!LAZYACCESS(occupants, future_statistic)) + Bump(future_statistic) + + +/obj/vehicle/sealed/car/cheburek/proc/toggle_gopmode(mob/user) + + if(gopmode) //gopmode activate, deactivate + cut_overlay(image(icon, "car_stickers", ABOVE_MOB_LAYER)) + visible_message(span_danger("You removed that odd paint from [src].")) + playsound(src, 'sound/effects/spray.ogg', 30) + gopmode = FALSE + else + add_overlay(image(icon, "car_stickers", ABOVE_MOB_LAYER)) + visible_message(span_danger("You put some odd insulating tape on [src].")) + playsound(src, 'sound/effects/spray.ogg', 30) + gopmode = TRUE + + +/obj/vehicle/sealed/car/cheburek/proc/increase_gop_gear(mob/user) + + if(gopgear < 3) + if(rand(1,10) >= 9) + AddElement(/datum/element/waddling) + playsound(src, pick('sound/vehicles/gear_blyat.ogg', 'sound/vehicles/gear_fault.ogg', 'sound/vehicles/gear_nah.ogg', 'sound/vehicles/gear_fault2.ogg', 'sound/vehicles/gear_fault3.ogg'), 50) + addtimer(CALLBACK(src, PROC_REF(revert_waddling)), 1 SECONDS) + else + playsound(src, 'sound/mecha/mechmove04.ogg', 75) + + vehicle_move_delay -= 0.5 + gopgear += 1 + else + visible_message(span_danger("[src] already on maximum gear!")) + +/obj/vehicle/sealed/car/cheburek/proc/decrease_gop_gear(mob/user) + + if(gopgear > 0) + if(rand(1,10) >= 8) // chance 3 of 10 to hear that funny noise + AddElement(/datum/element/waddling) // your gears are juggling like a clown do + playsound(src, pick('sound/vehicles/gear_blyat.ogg', 'sound/vehicles/gear_fault.ogg', 'sound/vehicles/gear_nah.ogg', 'sound/vehicles/gear_fault2.ogg', 'sound/vehicles/gear_fault3.ogg'), 50) + addtimer(CALLBACK(src, PROC_REF(revert_waddling)), 1 SECONDS) + else + playsound(src, 'sound/mecha/mechmove04.ogg', 75) + + vehicle_move_delay += 0.5 + gopgear -= 1 + else + visible_message(span_danger("[src] already on minumum gear!")) + + +/obj/vehicle/sealed/car/cheburek/proc/revert_waddling() + + visible_message(span_danger("Uhh, gear finnaly shifted on [src]...")) + RemoveElement(/datum/element/waddling) + + +/obj/vehicle/sealed/car/cheburek/proc/car_lights_toggle(mob/user) + + if(!light_on) + cut_overlay(image(icon, "car_headlights", LYING_MOB_LAYER)) + else + add_overlay(image(icon, "car_headlights", LYING_MOB_LAYER)) + + +/obj/vehicle/sealed/car/cheburek/proc/toggle_gop_turn(mob/user) + + isturnsound_on = !isturnsound_on + // start point of endless tiks + addtimer(CALLBACK(src, PROC_REF(endless_tik)), 0.5 SECONDS) + + +/obj/vehicle/sealed/car/cheburek/proc/endless_tik() + + if(isturnsound_on) + playsound(src, 'sound/vehicles/car_turn_signal.ogg', 60) + cut_overlay(image(icon, "car_blinkers", LYING_MOB_LAYER)) + addtimer(CALLBACK(src, PROC_REF(endless_tak)), 0.5 SECONDS) + + +/obj/vehicle/sealed/car/cheburek/proc/endless_tak() + + if(isturnsound_on) + //playsound(src, 'sound/vehicles/car_turn_signal.ogg', 60) // too much noise without delay + add_overlay(image(icon, "car_blinkers", LYING_MOB_LAYER)) + addtimer(CALLBACK(src, PROC_REF(endless_tik)), 0.5 SECONDS) diff --git a/massmeta/icons/obj/toys/shaha.dmi b/massmeta/icons/obj/toys/shaha.dmi new file mode 100644 index 0000000000000000000000000000000000000000..06e958c1d2e13c844f556cae166f419fe5bac3d8 GIT binary patch literal 12700 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 Date: Fri, 15 Dec 2023 19:10:45 +0700 Subject: [PATCH 3/9] made corret file name paths for sounds and icon --- massmeta/code/modules/vehicles/cars/cheburek.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/massmeta/code/modules/vehicles/cars/cheburek.dm b/massmeta/code/modules/vehicles/cars/cheburek.dm index 171ccf9d8d360..05dc7bd361fb4 100644 --- a/massmeta/code/modules/vehicles/cars/cheburek.dm +++ b/massmeta/code/modules/vehicles/cars/cheburek.dm @@ -2,7 +2,7 @@ /obj/vehicle/sealed/car/cheburek name = "Cheburek" desc = "The Bucket with bolts and nuts" - icon = 'icons/obj/toys/shaha.dmi' + icon = 'massmeta/icons/obj/toys/shaha.dmi' icon_state = "cheburek" // the name form gta 5 you know? layer = LYING_MOB_LAYER max_occupants = 4 @@ -94,7 +94,7 @@ if(gopgear < 3) if(rand(1,10) >= 9) AddElement(/datum/element/waddling) - playsound(src, pick('sound/vehicles/gear_blyat.ogg', 'sound/vehicles/gear_fault.ogg', 'sound/vehicles/gear_nah.ogg', 'sound/vehicles/gear_fault2.ogg', 'sound/vehicles/gear_fault3.ogg'), 50) + playsound(src, pick('massmeta/sound/vehicles/gear_blyat.ogg', 'massmeta/sound/vehicles/gear_fault.ogg', 'massmeta/sound/vehicles/gear_nah.ogg', 'massmeta/sound/vehicles/gear_fault2.ogg', 'massmeta/sound/vehicles/gear_fault3.ogg'), 50) addtimer(CALLBACK(src, PROC_REF(revert_waddling)), 1 SECONDS) else playsound(src, 'sound/mecha/mechmove04.ogg', 75) @@ -109,7 +109,7 @@ if(gopgear > 0) if(rand(1,10) >= 8) // chance 3 of 10 to hear that funny noise AddElement(/datum/element/waddling) // your gears are juggling like a clown do - playsound(src, pick('sound/vehicles/gear_blyat.ogg', 'sound/vehicles/gear_fault.ogg', 'sound/vehicles/gear_nah.ogg', 'sound/vehicles/gear_fault2.ogg', 'sound/vehicles/gear_fault3.ogg'), 50) + playsound(src, pick('massmeta/sound/vehicles/gear_blyat.ogg', 'massmeta/sound/vehicles/gear_fault.ogg', 'massmeta/sound/vehicles/gear_nah.ogg', 'massmeta/sound/vehicles/gear_fault2.ogg', 'massmeta/sound/vehicles/gear_fault3.ogg'), 50) addtimer(CALLBACK(src, PROC_REF(revert_waddling)), 1 SECONDS) else playsound(src, 'sound/mecha/mechmove04.ogg', 75) @@ -144,7 +144,7 @@ /obj/vehicle/sealed/car/cheburek/proc/endless_tik() if(isturnsound_on) - playsound(src, 'sound/vehicles/car_turn_signal.ogg', 60) + playsound(src, 'massmeta/sound/vehicles/car_turn_signal.ogg', 60) cut_overlay(image(icon, "car_blinkers", LYING_MOB_LAYER)) addtimer(CALLBACK(src, PROC_REF(endless_tak)), 0.5 SECONDS) From 7c84e21715056116d1bbb53fb02066dde2120422 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 15 Dec 2023 19:28:41 +0700 Subject: [PATCH 4/9] add buttons only for shaha, some orig clowncar b removed --- massmeta/icons/mob/actions/actions_vehicle.dmi | Bin 0 -> 5983 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 massmeta/icons/mob/actions/actions_vehicle.dmi diff --git a/massmeta/icons/mob/actions/actions_vehicle.dmi b/massmeta/icons/mob/actions/actions_vehicle.dmi new file mode 100644 index 0000000000000000000000000000000000000000..02f435c8b83517964a271e9fb344687015071582 GIT binary patch literal 5983 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 literal 0 HcmV?d00001 From 504138db66aa40d18294f79654c08ecfd0013d70 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 15 Dec 2023 19:39:15 +0700 Subject: [PATCH 5/9] orig file with modifications in long /// /// --- .../code/modules/vehicles/vehicle_actions.dm | 549 ++++++++++++++++++ 1 file changed, 549 insertions(+) create mode 100644 massmeta/code/modules/vehicles/vehicle_actions.dm diff --git a/massmeta/code/modules/vehicles/vehicle_actions.dm b/massmeta/code/modules/vehicles/vehicle_actions.dm new file mode 100644 index 0000000000000..508c493b07f68 --- /dev/null +++ b/massmeta/code/modules/vehicles/vehicle_actions.dm @@ -0,0 +1,549 @@ +//VEHICLE DEFAULT HANDLING + +/** + * ## generate_actions + * + * You override this with initialize_passenger_action_type and initialize_controller_action_type calls + * To give passengers actions when they enter the vehicle. + * Read the documentation on the aforementioned procs to learn the difference + */ +/obj/vehicle/proc/generate_actions() + return + +/** + * ## generate_action_type + * + * A small proc to properly set up each action path. + * args: + * * actiontype: typepath of the action the proc sets up. + * returns created and set up action instance + */ +/obj/vehicle/proc/generate_action_type(actiontype) + var/datum/action/vehicle/A = new actiontype + if(!istype(A)) + return + A.vehicle_target = src + return A + +/** + * ## initialize_passenger_action_type + * + * Gives any passenger that enters the mech this action. + * They will lose it when they disembark. + * args: + * * actiontype: typepath of the action you want to give occupants. + */ +/obj/vehicle/proc/initialize_passenger_action_type(actiontype) + autogrant_actions_passenger += actiontype + for(var/i in occupants) + grant_passenger_actions(i) //refresh + +/** + * ## destroy_passenger_action_type + * + * Removes this action type from all occupants and stops autogranting it + * args: + * * actiontype: typepath of the action you want to remove from occupants and the autogrant list. + */ +/obj/vehicle/proc/destroy_passenger_action_type(actiontype) + autogrant_actions_passenger -= actiontype + for(var/i in occupants) + remove_action_type_from_mob(actiontype, i) + +/** + * ## initialize_controller_action_type + * + * Gives any passenger that enters the vehicle this action... IF they have the correct vehicle control flag. + * This is used so passengers cannot press buttons only drivers should have, for example. + * args: + * * actiontype: typepath of the action you want to give occupants. + */ +/obj/vehicle/proc/initialize_controller_action_type(actiontype, control_flag) + LAZYINITLIST(autogrant_actions_controller["[control_flag]"]) + autogrant_actions_controller["[control_flag]"] += actiontype + for(var/i in occupants) + grant_controller_actions(i) //refresh + +/** + * ## destroy_controller_action_type + * + * As the name implies, removes the actiontype from autogrant and removes it from all occupants + * args: + * * actiontype: typepath of the action you want to remove from occupants and autogrant. + */ +/obj/vehicle/proc/destroy_controller_action_type(actiontype, control_flag) + autogrant_actions_controller["[control_flag]"] -= actiontype + UNSETEMPTY(autogrant_actions_controller["[control_flag]"]) + for(var/i in occupants) + remove_action_type_from_mob(actiontype, i) + +/** + * ## grant_action_type_to_mob + * + * As on the tin, it does all the annoying small stuff and sanity needed + * to GRANT an action to a mob. + * args: + * * actiontype: typepath of the action you want to give to grant_to. + * * grant_to: the mob we're giving actiontype to + * returns TRUE if successfully granted + */ +/obj/vehicle/proc/grant_action_type_to_mob(actiontype, mob/grant_to) + if(isnull(LAZYACCESS(occupants, grant_to)) || !actiontype) + return FALSE + LAZYINITLIST(occupant_actions[grant_to]) + if(occupant_actions[grant_to][actiontype]) + return TRUE + var/datum/action/action = generate_action_type(actiontype) + action.Grant(grant_to) + occupant_actions[grant_to][action.type] = action + return TRUE + +/** + * ## remove_action_type_from_mob + * + * As on the tin, it does all the annoying small stuff and sanity needed + * to REMOVE an action to a mob. + * args: + * * actiontype: typepath of the action you want to give to grant_to. + * * take_from: the mob we're taking actiontype to + * returns TRUE if successfully removed + */ +/obj/vehicle/proc/remove_action_type_from_mob(actiontype, mob/take_from) + if(isnull(LAZYACCESS(occupants, take_from)) || !actiontype) + return FALSE + LAZYINITLIST(occupant_actions[take_from]) + if(occupant_actions[take_from][actiontype]) + var/datum/action/action = occupant_actions[take_from][actiontype] + // Actions don't dissipate on removal, they just sit around assuming they'll be reusued + // Gotta qdel + qdel(action) + occupant_actions[take_from] -= actiontype + return TRUE + +/** + * ## grant_passenger_actions + * + * Called on every passenger that enters the vehicle, goes through the list of actions it needs to give... + * and does that. + * args: + * * grant_to: mob that needs to get every action the vehicle grants + */ +/obj/vehicle/proc/grant_passenger_actions(mob/grant_to) + for(var/v in autogrant_actions_passenger) + grant_action_type_to_mob(v, grant_to) + +/** + * ## remove_passenger_actions + * + * Called on every passenger that exits the vehicle, goes through the list of actions it needs to remove... + * and does that. + * args: + * * take_from: mob that needs to get every action the vehicle grants + */ +/obj/vehicle/proc/remove_passenger_actions(mob/take_from) + for(var/v in autogrant_actions_passenger) + remove_action_type_from_mob(v, take_from) + +/obj/vehicle/proc/grant_controller_actions(mob/M) + if(!istype(M) || isnull(LAZYACCESS(occupants, M))) + return FALSE + for(var/i in GLOB.bitflags) + if(occupants[M] & i) + grant_controller_actions_by_flag(M, i) + return TRUE + +/obj/vehicle/proc/remove_controller_actions(mob/M) + if(!istype(M) || isnull(LAZYACCESS(occupants, M))) + return FALSE + for(var/i in GLOB.bitflags) + remove_controller_actions_by_flag(M, i) + return TRUE + +/obj/vehicle/proc/grant_controller_actions_by_flag(mob/M, flag) + if(!istype(M)) + return FALSE + for(var/v in autogrant_actions_controller["[flag]"]) + grant_action_type_to_mob(v, M) + return TRUE + +/obj/vehicle/proc/remove_controller_actions_by_flag(mob/M, flag) + if(!istype(M)) + return FALSE + for(var/v in autogrant_actions_controller["[flag]"]) + remove_action_type_from_mob(v, M) + return TRUE + +/obj/vehicle/proc/cleanup_actions_for_mob(mob/M) + if(!istype(M)) + return FALSE + for(var/path in occupant_actions[M]) + stack_trace("Leftover action type [path] in vehicle type [type] for mob type [M.type] - THIS SHOULD NOT BE HAPPENING!") + var/datum/action/action = occupant_actions[M][path] + action.Remove(M) + occupant_actions[M] -= path + occupant_actions -= M + return TRUE + +/***************** ACTION DATUMS *****************/ + +/datum/action/vehicle + check_flags = AB_CHECK_HANDS_BLOCKED | AB_CHECK_IMMOBILE | AB_CHECK_CONSCIOUS + button_icon = 'massmeta/icons/mob/actions/actions_vehicle.dmi' + button_icon_state = "vehicle_eject" + var/obj/vehicle/vehicle_target + +/datum/action/vehicle/Destroy() + vehicle_target = null + return ..() + +/datum/action/vehicle/sealed + check_flags = AB_CHECK_IMMOBILE | AB_CHECK_CONSCIOUS + var/obj/vehicle/sealed/vehicle_entered_target + +/datum/action/vehicle/sealed/Destroy() + vehicle_entered_target = null + return ..() + +/datum/action/vehicle/sealed/climb_out + name = "Climb Out" + desc = "Climb out of your vehicle!" + button_icon_state = "car_eject" + +/datum/action/vehicle/sealed/climb_out/Trigger(trigger_flags) + if(..() && istype(vehicle_entered_target)) + vehicle_entered_target.mob_try_exit(owner, owner) + +/datum/action/vehicle/ridden + var/obj/vehicle/ridden/vehicle_ridden_target + +/datum/action/vehicle/sealed/remove_key + name = "Remove key" + desc = "Take your key out of the vehicle's ignition." + button_icon_state = "car_removekey" + +/datum/action/vehicle/sealed/remove_key/Trigger(trigger_flags) + vehicle_entered_target.remove_key(owner) + +//CLOWN CAR ACTION DATUMS +/datum/action/vehicle/sealed/horn + name = "Honk Horn" + desc = "Honk your classy horn." + button_icon_state = "car_horn" + var/hornsound = 'sound/items/carhorn.ogg' + +/datum/action/vehicle/sealed/horn/Trigger(trigger_flags) + if(TIMER_COOLDOWN_RUNNING(src, COOLDOWN_CAR_HONK)) + return + TIMER_COOLDOWN_START(src, COOLDOWN_CAR_HONK, 2 SECONDS) + vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] loudly honks!")) + to_chat(owner, span_notice("You press [vehicle_entered_target]'s horn.")) + if(istype(vehicle_target.inserted_key, /obj/item/bikehorn)) + vehicle_target.inserted_key.attack_self(owner) //The bikehorn plays a sound instead + return + playsound(vehicle_entered_target, hornsound, 75) + +/datum/action/vehicle/sealed/headlights + name = "Toggle Headlights" + desc = "Turn on your brights!" + button_icon_state = "car_headlights" + +/datum/action/vehicle/sealed/headlights/Trigger(trigger_flags) + to_chat(owner, span_notice("You flip the switch for the vehicle's headlights.")) + vehicle_entered_target.headlights_toggle = !vehicle_entered_target.headlights_toggle + vehicle_entered_target.set_light_on(vehicle_entered_target.headlights_toggle) + vehicle_entered_target.update_appearance() + playsound(owner, vehicle_entered_target.headlights_toggle ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE) + +/datum/action/vehicle/sealed/dump_kidnapped_mobs + name = "Dump Kidnapped Mobs" + desc = "Dump all objects and people in your car on the floor." + button_icon_state = "car_dump" + +/datum/action/vehicle/sealed/dump_kidnapped_mobs/Trigger(trigger_flags) + vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] starts dumping the people inside of it.")) + vehicle_entered_target.dump_specific_mobs(VEHICLE_CONTROL_KIDNAPPED) + + +/datum/action/vehicle/sealed/roll_the_dice + name = "Press Colorful Button" + desc = "Press one of those colorful buttons on your display panel!" + button_icon_state = "car_rtd" + +/datum/action/vehicle/sealed/roll_the_dice/Trigger(trigger_flags) + if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) + return + var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target + C.roll_the_dice(owner) + +/datum/action/vehicle/sealed/cannon + name = "Toggle Siege Mode" + desc = "Destroy them with their own fodder!" + button_icon_state = "car_cannon" + +/datum/action/vehicle/sealed/cannon/Trigger(trigger_flags) + if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) + return + var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target + C.toggle_cannon(owner) + + +/datum/action/vehicle/sealed/thank + name = "Thank the Clown Car Driver" + desc = "They're just doing their job." + button_icon_state = "car_thanktheclown" + COOLDOWN_DECLARE(thank_time_cooldown) + + +/datum/action/vehicle/sealed/thank/Trigger(trigger_flags) + if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) + return + if(!COOLDOWN_FINISHED(src, thank_time_cooldown)) + return + COOLDOWN_START(src, thank_time_cooldown, 6 SECONDS) + var/obj/vehicle/sealed/car/clowncar/clown_car = vehicle_entered_target + var/mob/living/carbon/human/clown = pick(clown_car.return_drivers()) + if(!clown) + return + owner.say("Thank you for the fun ride, [clown.name]!") + clown_car.increment_thanks_counter() + + +/////////////////////////////////////////////////////////////////////// +// new gop car features + + + +/datum/action/vehicle/sealed/gopnik + name = "Toggle Gop Mode" + desc = "Grabs your Vodka and Semki!" + button_icon_state = "gop_mode" + COOLDOWN_DECLARE(gopnik_time_cooldown) //yes, you need some time for repaint your rusty garbage + +/datum/action/vehicle/sealed/gopnik/Trigger(trigger_flags) + if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/cheburek)) + return + if(!COOLDOWN_FINISHED(src, gopnik_time_cooldown)) + return + COOLDOWN_START(src, gopnik_time_cooldown, 3 SECONDS) + var/obj/vehicle/sealed/car/cheburek/C = vehicle_entered_target + C.toggle_gopmode(owner) + +/datum/action/vehicle/sealed/gopnik_gear_up + name = "Gear UP" + desc = "Make your vedro move faster!" + button_icon_state = "car_gear_up" + COOLDOWN_DECLARE(gopnik_shift_up_cooldown) + +/datum/action/vehicle/sealed/gopnik_gear_up/Trigger(trigger_flags) + if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/cheburek)) + return + if(!COOLDOWN_FINISHED(src, gopnik_shift_up_cooldown)) + return + COOLDOWN_START(src, gopnik_shift_up_cooldown, 1 SECONDS) + var/obj/vehicle/sealed/car/cheburek/G = vehicle_entered_target + G.increase_gop_gear(owner) + +/datum/action/vehicle/sealed/gopnik_gear_down + name = "Gear DOWN" + desc = "Make your vedro move slower!" + button_icon_state = "car_gear_down" + COOLDOWN_DECLARE(gopnik_shift_down_cooldown) + +/datum/action/vehicle/sealed/gopnik_gear_down/Trigger(trigger_flags) + if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/cheburek)) + return + if(!COOLDOWN_FINISHED(src, gopnik_shift_down_cooldown)) + return + COOLDOWN_START(src, gopnik_shift_down_cooldown, 1 SECONDS) + var/obj/vehicle/sealed/car/cheburek/G = vehicle_entered_target + G.decrease_gop_gear(owner) + +/datum/action/vehicle/sealed/gop_headlights + name = "Toggle Headlights" + desc = "Turn on your brights!" + button_icon_state = "car_headlights" + +/datum/action/vehicle/sealed/gop_headlights/Trigger(trigger_flags) + to_chat(owner, span_notice("You flip the switch for the vehicle's headlights.")) + vehicle_entered_target.headlights_toggle = !vehicle_entered_target.headlights_toggle + vehicle_entered_target.set_light_on(vehicle_entered_target.headlights_toggle) + vehicle_entered_target.update_appearance() + playsound(owner, vehicle_entered_target.headlights_toggle ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE) + var/obj/vehicle/sealed/car/cheburek/L = vehicle_entered_target + L.car_lights_toggle(owner) + +/datum/action/vehicle/sealed/gop_turn + name = "Avariyka" + desc = "Useful if you need to park your bucket anywhere" + button_icon_state = "car_blinker" + +/datum/action/vehicle/sealed/gop_turn/Trigger(trigger_flags) + if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/cheburek)) + return + var/obj/vehicle/sealed/car/cheburek/T = vehicle_entered_target + T.toggle_gop_turn(owner) + +/datum/action/vehicle/sealed/blyat + name = "Thank the Clown Car Driver" + desc = "Wait, what clown you meant?" + button_icon_state = "car_thanktheclown" + +/datum/action/vehicle/sealed/blyat/Trigger(trigger_flags) + if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/cheburek)) + return + + var/obj/vehicle/sealed/car/clowncar/cheburek = vehicle_entered_target + owner.say("Блять!") // yes, without delay + + +/////////////////////////////////////////////////////////////////////// + + +/datum/action/vehicle/ridden/wheelchair/bell + name = "Bell Ring" + desc = "Ring the bell." + button_icon = 'icons/obj/service/bureaucracy.dmi' + button_icon_state = "desk_bell" + check_flags = AB_CHECK_CONSCIOUS + var/bell_cooldown + +/datum/action/vehicle/ridden/wheelchair/bell/Trigger(trigger_flags) + if(TIMER_COOLDOWN_RUNNING(src, bell_cooldown)) + return + TIMER_COOLDOWN_START(src, bell_cooldown, 0.5 SECONDS) + playsound(vehicle_ridden_target, 'sound/machines/microwave/microwave-end.ogg', 70) + +/datum/action/vehicle/ridden/scooter/skateboard/ollie + name = "Ollie" + desc = "Get some air! Land on a table to do a gnarly grind." + button_icon_state = "skateboard_ollie" + check_flags = AB_CHECK_CONSCIOUS + +/datum/action/vehicle/ridden/scooter/skateboard/ollie/Trigger(trigger_flags) + . = ..() + if(!.) + return + var/obj/vehicle/ridden/scooter/skateboard/vehicle = vehicle_target + vehicle.obj_flags |= BLOCK_Z_OUT_DOWN + if (vehicle.grinding) + return + var/mob/living/rider = owner + var/turf/landing_turf = get_step(vehicle.loc, vehicle.dir) + rider.adjustStaminaLoss(vehicle.instability* 0.75) + if (rider.getStaminaLoss() >= 100) + vehicle.obj_flags &= ~CAN_BE_HIT + playsound(src, 'sound/effects/bang.ogg', 20, TRUE) + vehicle.unbuckle_mob(rider) + rider.throw_at(landing_turf, 2, 2) + rider.Paralyze(40) + vehicle.visible_message(span_danger("[rider] misses the landing and falls on [rider.p_their()] face!")) + return + if((locate(/obj/structure/table) in landing_turf) || (locate(/obj/structure/fluff/tram_rail) in landing_turf)) + if(locate(/obj/structure/fluff/tram_rail) in vehicle.loc.contents) + rider.client.give_award(/datum/award/achievement/misc/tram_surfer, rider) + vehicle.grinding = TRUE + vehicle.icon_state = "[initial(vehicle.icon_state)]-grind" + addtimer(CALLBACK(vehicle, TYPE_PROC_REF(/obj/vehicle/ridden/scooter/skateboard/, grind)), 2) + else + vehicle.obj_flags &= ~BLOCK_Z_OUT_DOWN + rider.spin(spintime = 4, speed = 1) + animate(rider, pixel_y = -6, time = 4) + animate(vehicle, pixel_y = -6, time = 3) + playsound(vehicle, 'sound/vehicles/skateboard_ollie.ogg', 50, TRUE) + passtable_on(rider, VEHICLE_TRAIT) + passtable_on(vehicle, VEHICLE_TRAIT) + rider.Move(landing_turf, vehicle_target.dir) + passtable_off(rider, VEHICLE_TRAIT) + passtable_off(vehicle, VEHICLE_TRAIT) + +/datum/action/vehicle/ridden/scooter/skateboard/kickflip + name = "Kickflip" + desc = "Kick your board up and catch it." + button_icon_state = "skateboard_ollie" + check_flags = AB_CHECK_CONSCIOUS + +/datum/action/vehicle/ridden/scooter/skateboard/kickflip/Trigger(trigger_flags) + var/obj/vehicle/ridden/scooter/skateboard/board = vehicle_target + var/mob/living/rider = owner + + rider.adjustStaminaLoss(board.instability) + if (rider.getStaminaLoss() >= 100) + playsound(src, 'sound/effects/bang.ogg', 20, vary = TRUE) + board.unbuckle_mob(rider) + rider.Paralyze(50) + if(prob(15)) + rider.visible_message( + span_danger("[rider] misses the landing and falls on [rider.p_their()] face!)"), + span_userdanger("You smack against the board, hard."), + ) + rider.emote("scream") + rider.adjustBruteLoss(10) // thats gonna leave a mark + return + rider.visible_message( + span_danger("[rider] misses the landing and falls on [rider.p_their()] face!"), + span_userdanger("You fall flat onto the board!"), + ) + return + + rider.visible_message( + span_notice("[rider] does a sick kickflip and catches [rider.p_their()] board in midair."), + span_notice("You do a sick kickflip, catching the board in midair! Stylish."), + ) + playsound(board, 'sound/vehicles/skateboard_ollie.ogg', 50, vary = TRUE) + rider.spin(spintime = 4, speed = 1) + animate(rider, pixel_y = -6, time = 0.4 SECONDS) + animate(board, pixel_y = -6, time = 0.3 SECONDS) + board.unbuckle_mob(rider) + addtimer(CALLBACK(board, TYPE_PROC_REF(/obj/vehicle/ridden/scooter/skateboard, pick_up_board), rider), 1 SECONDS) // so the board can still handle "picking it up" + + + +//VIM ACTION DATUMS + +/datum/action/vehicle/sealed/climb_out/vim + name = "Eject From Mech" + button_icon = 'icons/mob/actions/actions_mecha.dmi' + button_icon_state = "mech_eject" + +/datum/action/vehicle/sealed/noise + var/sound_path = 'sound/items/carhorn.ogg' + var/sound_message = "makes a sound." + +/datum/action/vehicle/sealed/noise/Trigger(trigger_flags) + var/obj/vehicle/sealed/car/vim/vim_mecha = vehicle_entered_target + if(!COOLDOWN_FINISHED(vim_mecha, sound_cooldown)) + vim_mecha.balloon_alert(owner, "on cooldown!") + return FALSE + COOLDOWN_START(vim_mecha, sound_cooldown, VIM_SOUND_COOLDOWN) + vehicle_entered_target.visible_message(span_notice("[vehicle_entered_target] [sound_message]")) + playsound(vim_mecha, sound_path, 75) + return TRUE + +/datum/action/vehicle/sealed/noise/chime + name = "Chime!" + desc = "Affirmative!" + button_icon_state = "vim_chime" + sound_path = 'sound/machines/chime.ogg' + sound_message = "chimes!" + +/datum/action/vehicle/sealed/noise/chime/Trigger(trigger_flags) + if(..()) + SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_CHIME_USED) + +/datum/action/vehicle/sealed/noise/buzz + name = "Buzz." + desc = "Negative!" + button_icon_state = "vim_buzz" + sound_path = 'sound/machines/buzz-sigh.ogg' + sound_message = "buzzes." + +/datum/action/vehicle/sealed/noise/buzz/Trigger(trigger_flags) + if(..()) + SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_BUZZ_USED) + +/datum/action/vehicle/sealed/headlights/vim + button_icon_state = "vim_headlights" + +/datum/action/vehicle/sealed/headlights/vim/Trigger(trigger_flags) + . = ..() + SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_HEADLIGHTS_TOGGLED, vehicle_entered_target.headlights_toggle) From 0130ff0126e81ca2f7b5ad0c98b042e51c3b2131 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 15 Dec 2023 19:41:43 +0700 Subject: [PATCH 6/9] added all new code-files --- massmeta/includes.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/massmeta/includes.dm b/massmeta/includes.dm index dabc07a7575d9..85021ea7deac1 100644 --- a/massmeta/includes.dm +++ b/massmeta/includes.dm @@ -81,6 +81,8 @@ #include "code\modules\projectiles\boxes_magazines\ammo_boxes.dm" #include "code\modules\projectiles\ammunition\ballistic\rifle.dm" #include "code\modules\projectiles\projectile\bullets\rifle.dm" +#include "code\modules\vehicles\vehicle_actions.dm" +#include "code\modules\vehicles\cars\cheburek.dm" //features #include "features\additional_circuit\includes.dm" #include "features\hardsuits\code\_jetpack.dm" From 997bce70a297581c2eb6b5dbe704ee28bec0cbfe Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 15 Dec 2023 20:15:09 +0700 Subject: [PATCH 7/9] removed excess code --- .../code/modules/vehicles/vehicle_actions.dm | 468 ------------------ 1 file changed, 468 deletions(-) diff --git a/massmeta/code/modules/vehicles/vehicle_actions.dm b/massmeta/code/modules/vehicles/vehicle_actions.dm index 508c493b07f68..57925fdfd05f1 100644 --- a/massmeta/code/modules/vehicles/vehicle_actions.dm +++ b/massmeta/code/modules/vehicles/vehicle_actions.dm @@ -1,318 +1,3 @@ -//VEHICLE DEFAULT HANDLING - -/** - * ## generate_actions - * - * You override this with initialize_passenger_action_type and initialize_controller_action_type calls - * To give passengers actions when they enter the vehicle. - * Read the documentation on the aforementioned procs to learn the difference - */ -/obj/vehicle/proc/generate_actions() - return - -/** - * ## generate_action_type - * - * A small proc to properly set up each action path. - * args: - * * actiontype: typepath of the action the proc sets up. - * returns created and set up action instance - */ -/obj/vehicle/proc/generate_action_type(actiontype) - var/datum/action/vehicle/A = new actiontype - if(!istype(A)) - return - A.vehicle_target = src - return A - -/** - * ## initialize_passenger_action_type - * - * Gives any passenger that enters the mech this action. - * They will lose it when they disembark. - * args: - * * actiontype: typepath of the action you want to give occupants. - */ -/obj/vehicle/proc/initialize_passenger_action_type(actiontype) - autogrant_actions_passenger += actiontype - for(var/i in occupants) - grant_passenger_actions(i) //refresh - -/** - * ## destroy_passenger_action_type - * - * Removes this action type from all occupants and stops autogranting it - * args: - * * actiontype: typepath of the action you want to remove from occupants and the autogrant list. - */ -/obj/vehicle/proc/destroy_passenger_action_type(actiontype) - autogrant_actions_passenger -= actiontype - for(var/i in occupants) - remove_action_type_from_mob(actiontype, i) - -/** - * ## initialize_controller_action_type - * - * Gives any passenger that enters the vehicle this action... IF they have the correct vehicle control flag. - * This is used so passengers cannot press buttons only drivers should have, for example. - * args: - * * actiontype: typepath of the action you want to give occupants. - */ -/obj/vehicle/proc/initialize_controller_action_type(actiontype, control_flag) - LAZYINITLIST(autogrant_actions_controller["[control_flag]"]) - autogrant_actions_controller["[control_flag]"] += actiontype - for(var/i in occupants) - grant_controller_actions(i) //refresh - -/** - * ## destroy_controller_action_type - * - * As the name implies, removes the actiontype from autogrant and removes it from all occupants - * args: - * * actiontype: typepath of the action you want to remove from occupants and autogrant. - */ -/obj/vehicle/proc/destroy_controller_action_type(actiontype, control_flag) - autogrant_actions_controller["[control_flag]"] -= actiontype - UNSETEMPTY(autogrant_actions_controller["[control_flag]"]) - for(var/i in occupants) - remove_action_type_from_mob(actiontype, i) - -/** - * ## grant_action_type_to_mob - * - * As on the tin, it does all the annoying small stuff and sanity needed - * to GRANT an action to a mob. - * args: - * * actiontype: typepath of the action you want to give to grant_to. - * * grant_to: the mob we're giving actiontype to - * returns TRUE if successfully granted - */ -/obj/vehicle/proc/grant_action_type_to_mob(actiontype, mob/grant_to) - if(isnull(LAZYACCESS(occupants, grant_to)) || !actiontype) - return FALSE - LAZYINITLIST(occupant_actions[grant_to]) - if(occupant_actions[grant_to][actiontype]) - return TRUE - var/datum/action/action = generate_action_type(actiontype) - action.Grant(grant_to) - occupant_actions[grant_to][action.type] = action - return TRUE - -/** - * ## remove_action_type_from_mob - * - * As on the tin, it does all the annoying small stuff and sanity needed - * to REMOVE an action to a mob. - * args: - * * actiontype: typepath of the action you want to give to grant_to. - * * take_from: the mob we're taking actiontype to - * returns TRUE if successfully removed - */ -/obj/vehicle/proc/remove_action_type_from_mob(actiontype, mob/take_from) - if(isnull(LAZYACCESS(occupants, take_from)) || !actiontype) - return FALSE - LAZYINITLIST(occupant_actions[take_from]) - if(occupant_actions[take_from][actiontype]) - var/datum/action/action = occupant_actions[take_from][actiontype] - // Actions don't dissipate on removal, they just sit around assuming they'll be reusued - // Gotta qdel - qdel(action) - occupant_actions[take_from] -= actiontype - return TRUE - -/** - * ## grant_passenger_actions - * - * Called on every passenger that enters the vehicle, goes through the list of actions it needs to give... - * and does that. - * args: - * * grant_to: mob that needs to get every action the vehicle grants - */ -/obj/vehicle/proc/grant_passenger_actions(mob/grant_to) - for(var/v in autogrant_actions_passenger) - grant_action_type_to_mob(v, grant_to) - -/** - * ## remove_passenger_actions - * - * Called on every passenger that exits the vehicle, goes through the list of actions it needs to remove... - * and does that. - * args: - * * take_from: mob that needs to get every action the vehicle grants - */ -/obj/vehicle/proc/remove_passenger_actions(mob/take_from) - for(var/v in autogrant_actions_passenger) - remove_action_type_from_mob(v, take_from) - -/obj/vehicle/proc/grant_controller_actions(mob/M) - if(!istype(M) || isnull(LAZYACCESS(occupants, M))) - return FALSE - for(var/i in GLOB.bitflags) - if(occupants[M] & i) - grant_controller_actions_by_flag(M, i) - return TRUE - -/obj/vehicle/proc/remove_controller_actions(mob/M) - if(!istype(M) || isnull(LAZYACCESS(occupants, M))) - return FALSE - for(var/i in GLOB.bitflags) - remove_controller_actions_by_flag(M, i) - return TRUE - -/obj/vehicle/proc/grant_controller_actions_by_flag(mob/M, flag) - if(!istype(M)) - return FALSE - for(var/v in autogrant_actions_controller["[flag]"]) - grant_action_type_to_mob(v, M) - return TRUE - -/obj/vehicle/proc/remove_controller_actions_by_flag(mob/M, flag) - if(!istype(M)) - return FALSE - for(var/v in autogrant_actions_controller["[flag]"]) - remove_action_type_from_mob(v, M) - return TRUE - -/obj/vehicle/proc/cleanup_actions_for_mob(mob/M) - if(!istype(M)) - return FALSE - for(var/path in occupant_actions[M]) - stack_trace("Leftover action type [path] in vehicle type [type] for mob type [M.type] - THIS SHOULD NOT BE HAPPENING!") - var/datum/action/action = occupant_actions[M][path] - action.Remove(M) - occupant_actions[M] -= path - occupant_actions -= M - return TRUE - -/***************** ACTION DATUMS *****************/ - -/datum/action/vehicle - check_flags = AB_CHECK_HANDS_BLOCKED | AB_CHECK_IMMOBILE | AB_CHECK_CONSCIOUS - button_icon = 'massmeta/icons/mob/actions/actions_vehicle.dmi' - button_icon_state = "vehicle_eject" - var/obj/vehicle/vehicle_target - -/datum/action/vehicle/Destroy() - vehicle_target = null - return ..() - -/datum/action/vehicle/sealed - check_flags = AB_CHECK_IMMOBILE | AB_CHECK_CONSCIOUS - var/obj/vehicle/sealed/vehicle_entered_target - -/datum/action/vehicle/sealed/Destroy() - vehicle_entered_target = null - return ..() - -/datum/action/vehicle/sealed/climb_out - name = "Climb Out" - desc = "Climb out of your vehicle!" - button_icon_state = "car_eject" - -/datum/action/vehicle/sealed/climb_out/Trigger(trigger_flags) - if(..() && istype(vehicle_entered_target)) - vehicle_entered_target.mob_try_exit(owner, owner) - -/datum/action/vehicle/ridden - var/obj/vehicle/ridden/vehicle_ridden_target - -/datum/action/vehicle/sealed/remove_key - name = "Remove key" - desc = "Take your key out of the vehicle's ignition." - button_icon_state = "car_removekey" - -/datum/action/vehicle/sealed/remove_key/Trigger(trigger_flags) - vehicle_entered_target.remove_key(owner) - -//CLOWN CAR ACTION DATUMS -/datum/action/vehicle/sealed/horn - name = "Honk Horn" - desc = "Honk your classy horn." - button_icon_state = "car_horn" - var/hornsound = 'sound/items/carhorn.ogg' - -/datum/action/vehicle/sealed/horn/Trigger(trigger_flags) - if(TIMER_COOLDOWN_RUNNING(src, COOLDOWN_CAR_HONK)) - return - TIMER_COOLDOWN_START(src, COOLDOWN_CAR_HONK, 2 SECONDS) - vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] loudly honks!")) - to_chat(owner, span_notice("You press [vehicle_entered_target]'s horn.")) - if(istype(vehicle_target.inserted_key, /obj/item/bikehorn)) - vehicle_target.inserted_key.attack_self(owner) //The bikehorn plays a sound instead - return - playsound(vehicle_entered_target, hornsound, 75) - -/datum/action/vehicle/sealed/headlights - name = "Toggle Headlights" - desc = "Turn on your brights!" - button_icon_state = "car_headlights" - -/datum/action/vehicle/sealed/headlights/Trigger(trigger_flags) - to_chat(owner, span_notice("You flip the switch for the vehicle's headlights.")) - vehicle_entered_target.headlights_toggle = !vehicle_entered_target.headlights_toggle - vehicle_entered_target.set_light_on(vehicle_entered_target.headlights_toggle) - vehicle_entered_target.update_appearance() - playsound(owner, vehicle_entered_target.headlights_toggle ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE) - -/datum/action/vehicle/sealed/dump_kidnapped_mobs - name = "Dump Kidnapped Mobs" - desc = "Dump all objects and people in your car on the floor." - button_icon_state = "car_dump" - -/datum/action/vehicle/sealed/dump_kidnapped_mobs/Trigger(trigger_flags) - vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] starts dumping the people inside of it.")) - vehicle_entered_target.dump_specific_mobs(VEHICLE_CONTROL_KIDNAPPED) - - -/datum/action/vehicle/sealed/roll_the_dice - name = "Press Colorful Button" - desc = "Press one of those colorful buttons on your display panel!" - button_icon_state = "car_rtd" - -/datum/action/vehicle/sealed/roll_the_dice/Trigger(trigger_flags) - if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) - return - var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target - C.roll_the_dice(owner) - -/datum/action/vehicle/sealed/cannon - name = "Toggle Siege Mode" - desc = "Destroy them with their own fodder!" - button_icon_state = "car_cannon" - -/datum/action/vehicle/sealed/cannon/Trigger(trigger_flags) - if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) - return - var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target - C.toggle_cannon(owner) - - -/datum/action/vehicle/sealed/thank - name = "Thank the Clown Car Driver" - desc = "They're just doing their job." - button_icon_state = "car_thanktheclown" - COOLDOWN_DECLARE(thank_time_cooldown) - - -/datum/action/vehicle/sealed/thank/Trigger(trigger_flags) - if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) - return - if(!COOLDOWN_FINISHED(src, thank_time_cooldown)) - return - COOLDOWN_START(src, thank_time_cooldown, 6 SECONDS) - var/obj/vehicle/sealed/car/clowncar/clown_car = vehicle_entered_target - var/mob/living/carbon/human/clown = pick(clown_car.return_drivers()) - if(!clown) - return - owner.say("Thank you for the fun ride, [clown.name]!") - clown_car.increment_thanks_counter() - - -/////////////////////////////////////////////////////////////////////// -// new gop car features - - - /datum/action/vehicle/sealed/gopnik name = "Toggle Gop Mode" desc = "Grabs your Vodka and Semki!" @@ -394,156 +79,3 @@ var/obj/vehicle/sealed/car/clowncar/cheburek = vehicle_entered_target owner.say("Блять!") // yes, without delay - - -/////////////////////////////////////////////////////////////////////// - - -/datum/action/vehicle/ridden/wheelchair/bell - name = "Bell Ring" - desc = "Ring the bell." - button_icon = 'icons/obj/service/bureaucracy.dmi' - button_icon_state = "desk_bell" - check_flags = AB_CHECK_CONSCIOUS - var/bell_cooldown - -/datum/action/vehicle/ridden/wheelchair/bell/Trigger(trigger_flags) - if(TIMER_COOLDOWN_RUNNING(src, bell_cooldown)) - return - TIMER_COOLDOWN_START(src, bell_cooldown, 0.5 SECONDS) - playsound(vehicle_ridden_target, 'sound/machines/microwave/microwave-end.ogg', 70) - -/datum/action/vehicle/ridden/scooter/skateboard/ollie - name = "Ollie" - desc = "Get some air! Land on a table to do a gnarly grind." - button_icon_state = "skateboard_ollie" - check_flags = AB_CHECK_CONSCIOUS - -/datum/action/vehicle/ridden/scooter/skateboard/ollie/Trigger(trigger_flags) - . = ..() - if(!.) - return - var/obj/vehicle/ridden/scooter/skateboard/vehicle = vehicle_target - vehicle.obj_flags |= BLOCK_Z_OUT_DOWN - if (vehicle.grinding) - return - var/mob/living/rider = owner - var/turf/landing_turf = get_step(vehicle.loc, vehicle.dir) - rider.adjustStaminaLoss(vehicle.instability* 0.75) - if (rider.getStaminaLoss() >= 100) - vehicle.obj_flags &= ~CAN_BE_HIT - playsound(src, 'sound/effects/bang.ogg', 20, TRUE) - vehicle.unbuckle_mob(rider) - rider.throw_at(landing_turf, 2, 2) - rider.Paralyze(40) - vehicle.visible_message(span_danger("[rider] misses the landing and falls on [rider.p_their()] face!")) - return - if((locate(/obj/structure/table) in landing_turf) || (locate(/obj/structure/fluff/tram_rail) in landing_turf)) - if(locate(/obj/structure/fluff/tram_rail) in vehicle.loc.contents) - rider.client.give_award(/datum/award/achievement/misc/tram_surfer, rider) - vehicle.grinding = TRUE - vehicle.icon_state = "[initial(vehicle.icon_state)]-grind" - addtimer(CALLBACK(vehicle, TYPE_PROC_REF(/obj/vehicle/ridden/scooter/skateboard/, grind)), 2) - else - vehicle.obj_flags &= ~BLOCK_Z_OUT_DOWN - rider.spin(spintime = 4, speed = 1) - animate(rider, pixel_y = -6, time = 4) - animate(vehicle, pixel_y = -6, time = 3) - playsound(vehicle, 'sound/vehicles/skateboard_ollie.ogg', 50, TRUE) - passtable_on(rider, VEHICLE_TRAIT) - passtable_on(vehicle, VEHICLE_TRAIT) - rider.Move(landing_turf, vehicle_target.dir) - passtable_off(rider, VEHICLE_TRAIT) - passtable_off(vehicle, VEHICLE_TRAIT) - -/datum/action/vehicle/ridden/scooter/skateboard/kickflip - name = "Kickflip" - desc = "Kick your board up and catch it." - button_icon_state = "skateboard_ollie" - check_flags = AB_CHECK_CONSCIOUS - -/datum/action/vehicle/ridden/scooter/skateboard/kickflip/Trigger(trigger_flags) - var/obj/vehicle/ridden/scooter/skateboard/board = vehicle_target - var/mob/living/rider = owner - - rider.adjustStaminaLoss(board.instability) - if (rider.getStaminaLoss() >= 100) - playsound(src, 'sound/effects/bang.ogg', 20, vary = TRUE) - board.unbuckle_mob(rider) - rider.Paralyze(50) - if(prob(15)) - rider.visible_message( - span_danger("[rider] misses the landing and falls on [rider.p_their()] face!)"), - span_userdanger("You smack against the board, hard."), - ) - rider.emote("scream") - rider.adjustBruteLoss(10) // thats gonna leave a mark - return - rider.visible_message( - span_danger("[rider] misses the landing and falls on [rider.p_their()] face!"), - span_userdanger("You fall flat onto the board!"), - ) - return - - rider.visible_message( - span_notice("[rider] does a sick kickflip and catches [rider.p_their()] board in midair."), - span_notice("You do a sick kickflip, catching the board in midair! Stylish."), - ) - playsound(board, 'sound/vehicles/skateboard_ollie.ogg', 50, vary = TRUE) - rider.spin(spintime = 4, speed = 1) - animate(rider, pixel_y = -6, time = 0.4 SECONDS) - animate(board, pixel_y = -6, time = 0.3 SECONDS) - board.unbuckle_mob(rider) - addtimer(CALLBACK(board, TYPE_PROC_REF(/obj/vehicle/ridden/scooter/skateboard, pick_up_board), rider), 1 SECONDS) // so the board can still handle "picking it up" - - - -//VIM ACTION DATUMS - -/datum/action/vehicle/sealed/climb_out/vim - name = "Eject From Mech" - button_icon = 'icons/mob/actions/actions_mecha.dmi' - button_icon_state = "mech_eject" - -/datum/action/vehicle/sealed/noise - var/sound_path = 'sound/items/carhorn.ogg' - var/sound_message = "makes a sound." - -/datum/action/vehicle/sealed/noise/Trigger(trigger_flags) - var/obj/vehicle/sealed/car/vim/vim_mecha = vehicle_entered_target - if(!COOLDOWN_FINISHED(vim_mecha, sound_cooldown)) - vim_mecha.balloon_alert(owner, "on cooldown!") - return FALSE - COOLDOWN_START(vim_mecha, sound_cooldown, VIM_SOUND_COOLDOWN) - vehicle_entered_target.visible_message(span_notice("[vehicle_entered_target] [sound_message]")) - playsound(vim_mecha, sound_path, 75) - return TRUE - -/datum/action/vehicle/sealed/noise/chime - name = "Chime!" - desc = "Affirmative!" - button_icon_state = "vim_chime" - sound_path = 'sound/machines/chime.ogg' - sound_message = "chimes!" - -/datum/action/vehicle/sealed/noise/chime/Trigger(trigger_flags) - if(..()) - SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_CHIME_USED) - -/datum/action/vehicle/sealed/noise/buzz - name = "Buzz." - desc = "Negative!" - button_icon_state = "vim_buzz" - sound_path = 'sound/machines/buzz-sigh.ogg' - sound_message = "buzzes." - -/datum/action/vehicle/sealed/noise/buzz/Trigger(trigger_flags) - if(..()) - SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_BUZZ_USED) - -/datum/action/vehicle/sealed/headlights/vim - button_icon_state = "vim_headlights" - -/datum/action/vehicle/sealed/headlights/vim/Trigger(trigger_flags) - . = ..() - SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_HEADLIGHTS_TOGGLED, vehicle_entered_target.headlights_toggle) From 02968099e21f5c99a4e9fa65f3b77eda0a400347 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 15 Dec 2023 20:32:20 +0700 Subject: [PATCH 8/9] renamed path for files, sound -> sounds --- massmeta/code/modules/vehicles/cars/cheburek.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/massmeta/code/modules/vehicles/cars/cheburek.dm b/massmeta/code/modules/vehicles/cars/cheburek.dm index 05dc7bd361fb4..1386f730880ad 100644 --- a/massmeta/code/modules/vehicles/cars/cheburek.dm +++ b/massmeta/code/modules/vehicles/cars/cheburek.dm @@ -94,7 +94,7 @@ if(gopgear < 3) if(rand(1,10) >= 9) AddElement(/datum/element/waddling) - playsound(src, pick('massmeta/sound/vehicles/gear_blyat.ogg', 'massmeta/sound/vehicles/gear_fault.ogg', 'massmeta/sound/vehicles/gear_nah.ogg', 'massmeta/sound/vehicles/gear_fault2.ogg', 'massmeta/sound/vehicles/gear_fault3.ogg'), 50) + playsound(src, pick('massmeta/sounds/vehicles/gear_blyat.ogg', 'massmeta/sounds/vehicles/gear_fault.ogg', 'massmeta/sounds/vehicles/gear_nah.ogg', 'massmeta/sounds/vehicles/gear_fault2.ogg', 'massmeta/sounds/vehicles/gear_fault3.ogg'), 50) addtimer(CALLBACK(src, PROC_REF(revert_waddling)), 1 SECONDS) else playsound(src, 'sound/mecha/mechmove04.ogg', 75) @@ -109,7 +109,7 @@ if(gopgear > 0) if(rand(1,10) >= 8) // chance 3 of 10 to hear that funny noise AddElement(/datum/element/waddling) // your gears are juggling like a clown do - playsound(src, pick('massmeta/sound/vehicles/gear_blyat.ogg', 'massmeta/sound/vehicles/gear_fault.ogg', 'massmeta/sound/vehicles/gear_nah.ogg', 'massmeta/sound/vehicles/gear_fault2.ogg', 'massmeta/sound/vehicles/gear_fault3.ogg'), 50) + playsound(src, pick('massmeta/sounds/vehicles/gear_blyat.ogg', 'massmeta/sounds/vehicles/gear_fault.ogg', 'massmeta/sounds/vehicles/gear_nah.ogg', 'massmeta/sounds/vehicles/gear_fault2.ogg', 'massmeta/sounds/vehicles/gear_fault3.ogg'), 50) addtimer(CALLBACK(src, PROC_REF(revert_waddling)), 1 SECONDS) else playsound(src, 'sound/mecha/mechmove04.ogg', 75) @@ -144,7 +144,7 @@ /obj/vehicle/sealed/car/cheburek/proc/endless_tik() if(isturnsound_on) - playsound(src, 'massmeta/sound/vehicles/car_turn_signal.ogg', 60) + playsound(src, 'massmeta/sounds/vehicles/car_turn_signal.ogg', 60) cut_overlay(image(icon, "car_blinkers", LYING_MOB_LAYER)) addtimer(CALLBACK(src, PROC_REF(endless_tak)), 0.5 SECONDS) From 494abe1776cd390afa6f31b9becc2def8bc55507 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 15 Dec 2023 21:17:30 +0700 Subject: [PATCH 9/9] changed it in all action-buttons --- massmeta/code/modules/vehicles/vehicle_actions.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/massmeta/code/modules/vehicles/vehicle_actions.dm b/massmeta/code/modules/vehicles/vehicle_actions.dm index 57925fdfd05f1..4d03664fdff2c 100644 --- a/massmeta/code/modules/vehicles/vehicle_actions.dm +++ b/massmeta/code/modules/vehicles/vehicle_actions.dm @@ -1,4 +1,6 @@ + /datum/action/vehicle/sealed/gopnik + button_icon = 'massmeta/icons/mob/actions/actions_vehicle.dmi' name = "Toggle Gop Mode" desc = "Grabs your Vodka and Semki!" button_icon_state = "gop_mode" @@ -14,6 +16,7 @@ C.toggle_gopmode(owner) /datum/action/vehicle/sealed/gopnik_gear_up + button_icon = 'massmeta/icons/mob/actions/actions_vehicle.dmi' name = "Gear UP" desc = "Make your vedro move faster!" button_icon_state = "car_gear_up" @@ -29,6 +32,7 @@ G.increase_gop_gear(owner) /datum/action/vehicle/sealed/gopnik_gear_down + button_icon = 'massmeta/icons/mob/actions/actions_vehicle.dmi' name = "Gear DOWN" desc = "Make your vedro move slower!" button_icon_state = "car_gear_down" @@ -58,6 +62,7 @@ L.car_lights_toggle(owner) /datum/action/vehicle/sealed/gop_turn + button_icon = 'massmeta/icons/mob/actions/actions_vehicle.dmi' name = "Avariyka" desc = "Useful if you need to park your bucket anywhere" button_icon_state = "car_blinker"