diff --git a/massmeta/code/game/objects/structures/crates_lockers/crates/large.dm b/massmeta/code/game/objects/structures/crates_lockers/crates/large.dm new file mode 100644 index 0000000000000..87f931c954e29 --- /dev/null +++ b/massmeta/code/game/objects/structures/crates_lockers/crates/large.dm @@ -0,0 +1,5 @@ +/obj/structure/closet/crate/large/soviet + name = "unusual large crate" + desc = "A deeply scratched wooden crate with eraser markings. You'll need a crowbar to get it open." + icon = 'massmeta/icons/obj/storage/crates.dmi' + icon_state = "largecrate_soviet" \ No newline at end of file diff --git a/massmeta/code/modules/cargo/packs/imports.dm b/massmeta/code/modules/cargo/packs/imports.dm new file mode 100644 index 0000000000000..79f124032e8c6 --- /dev/null +++ b/massmeta/code/modules/cargo/packs/imports.dm @@ -0,0 +1,15 @@ +/datum/supply_pack/imports/sovietvehicle + name = "Soviet Vehicle Exports" + desc = "The most affordable vehicle in the entire galaxy. \ + Comes with tools and something else." + contraband = TRUE + cost = 666666 // devil creature for devil price, not because model number is "6" + contains = list( + /obj/item/food/semki = 6, + /obj/item/storage/toolbox/mechanical, + /obj/item/reagent_containers/cup/glass/bottle/vodka = 6, + /mob/living/basic/bear/russian = 6, // protection class "6" + /obj/vehicle/sealed/car/cheburek + ) + crate_name = "Top Secret" + crate_type = /obj/structure/closet/crate/large/soviet \ No newline at end of file diff --git a/massmeta/code/modules/uplink/uplink_items/nukeops.dm b/massmeta/code/modules/uplink/uplink_items/nukeops.dm index 57b48355832b0..6a57499537618 100644 --- a/massmeta/code/modules/uplink/uplink_items/nukeops.dm +++ b/massmeta/code/modules/uplink/uplink_items/nukeops.dm @@ -18,3 +18,12 @@ item = /obj/item/clothing/suit/space/hardsuit/shielded/syndi cost = 20 purchasable_from = UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS + +/datum/uplink_item/device_tools/car + name = "BlyatMobile" + desc = "Conquer the New Horizons on 4-passenger seats sedan." + item = /obj/vehicle/sealed/car/cheburek + cost = 40 + surplus = 0 + purchasable_from = UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS + restricted = TRUE \ No newline at end of file diff --git a/massmeta/code/modules/vehicles/cars/cheburek.dm b/massmeta/code/modules/vehicles/cars/cheburek.dm index cdc9aa5b3dd53..086a0bef414a4 100644 --- a/massmeta/code/modules/vehicles/cars/cheburek.dm +++ b/massmeta/code/modules/vehicles/cars/cheburek.dm @@ -1,69 +1,108 @@ -/// Big 3x3 car only available to admins which can run people over + /** + * Really big car with 4х4 sprite. + * + * Can run people over. + * + * Can run ALL over in "I DRIVE" mode. + * + * Has gearbox, you can break it, and also fix it by yourself! + * + * It can be used in minor events. + * + * Some memes and gags included. + */ + /obj/vehicle/sealed/car/cheburek name = "Cheburek" - desc = "The Bucket with bolts and nuts" + desc = "The cheapest Bucket with bolts and nuts you can afford" icon = 'massmeta/icons/obj/toys/shaha.dmi' - icon_state = "cheburek" // the name form gta 5 you know? + 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 = 1 SECONDS escape_time = 1 SECONDS - 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 + vehicle_move_delay = 1.5 + /// It's like a fun-mode in clowncar var/gopmode = FALSE - var/gopgear = 3 // nowadays it has 3(actually 4) five-speed gearbox, someday it had 5... and also R-ocket one + /// Gearbox fuctions + var/gopgear = 1 // (0 = parking) nowadays it has 4 working gears in five-speed gearbox (aslo no R-ocket one, sorry), be carefull with it! var/gearbox_failure_count = 1 // value between 1..10, 10 - means fully broken - /// headlights of Cheburek, front white-yellow(Done but have some [BUG]'s to resolve!) and rear deep-red(TODO) + /// Headlights of Cheburek, front white-yellow (Done, but have some [BUG]'s to resolve!) light_system = OVERLAY_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/headlight_color = COLOR_LIGHT_YELLOW + /// Turns on and off sound and side lights on repeat var/isturnsound_on = FALSE - var/blinkers_on = FALSE + var/blinkers_on = FALSE // aditional variable used for correct blinkers stop + /// You need to open car bonnet to operate with gearbox + var/bonnet_isopen = FALSE + /// blood layer if you made a good Strike!!! [0..3] + var/blood_layer_intensity = 0 + var/number_of_bumped_mobs = 0 + ///yea, some meme here + var/last_chosen_meme + /obj/vehicle/sealed/car/cheburek/Initialize(mapload) . = ..() + START_PROCESSING(SSobj, src) + +/obj/vehicle/sealed/car/cheburek/update_overlays() + . = ..() + . += emissive_appearance(icon, "rear_lights", src, alpha=src.alpha) + . += emissive_appearance(icon, "car_blinkers_emissive", src, alpha=src.alpha) /obj/vehicle/sealed/car/cheburek/process() if(light_on) - set_light_color(headlight_colors) + set_light_color(headlight_color) /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) + initialize_controller_action_type(/datum/action/vehicle/sealed/headlights, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/blinkers, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/gear_up, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/gear_down, VEHICLE_CONTROL_DRIVE) /obj/vehicle/sealed/car/cheburek/Bump(atom/bumped) . = ..() if(!bumped.density || occupant_amount() == 0) return - if(crash_all) + if(gopmode) // special feature for meme, looks bad but okayage 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 + if(!ishuman(bumped) || gopgear < 3) // also on low gear [0-1-2] you can't bump anyone return + if(gopgear >= 3) // if you bump too much - gear may switch down + if(prob(20)) + visible_message(span_boldwarning("Gearbox randomly switched itself!")) + decrease_gear() var/mob/living/carbon/human/rammed = bumped rammed.Paralyze(80) rammed.adjustStaminaLoss(30) rammed.apply_damage(rand(15,30), BRUTE) - if(!crash_all) + if(!gopmode) + if(prob(5) && blood_layer_intensity < 3) + if(blood_layer_intensity != 0) + cut_overlay(image(icon, "blood_[blood_layer_intensity]", LYING_MOB_LAYER)) + blood_layer_intensity++ + add_overlay(image(icon, "blood_[blood_layer_intensity]", LYING_MOB_LAYER)) + if(blood_layer_intensity == 3) + headlight_color = COLOR_RED_LIGHT // muhahahah + visible_message(span_userdanger("А terrible roar you heard from the engine, but it was good")) + gearbox_failure_count = 0 + // maybe here make some sort of an achivement? 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) + number_of_bumped_mobs++ /obj/vehicle/sealed/car/cheburek/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) . = ..() @@ -75,17 +114,77 @@ if(!LAZYACCESS(occupants, future_statistic)) Bump(future_statistic) +/obj/vehicle/sealed/car/cheburek/atom_destruction(damage_flag) + playsound(src, 'sound/vehicles/clowncar_fart.ogg', 100) + STOP_PROCESSING(SSobj,src) + if(gopmode) + var/turf/distant_turf = get_ranged_target_turf(get_turf(src), src.dir, 15) + new /obj/effect/immovablerod/driveshaft( + get_turf(src), + distant_turf, + null, + FALSE + ) + return ..() + +////////////////////////// +/////Driveshaft Event///// +////////////////////////// + +/obj/effect/immovablerod/driveshaft + name = "hyperspaced driveshaft" + icon_state = "driveshaft" + notify = FALSE + loopy_rod = TRUE + dnd_style_level_up = FALSE + /// The distance the rod will go. + var/max_distance = 13 + /// The turf the rod started from, to calcuate distance. + var/turf/start_turf + +/obj/effect/immovablerod/driveshaft/Initialize(mapload, atom/target_atom, atom/specific_target, force_looping = FALSE, max_distance = 13) + . = ..() + start_turf = get_turf(src) + src.max_distance = max_distance + +/obj/effect/immovablerod/driveshaft/Destroy(force) + start_turf = null + return ..() + +/obj/effect/immovablerod/driveshaft/Move() + if(get_dist(start_turf, get_turf(src)) >= max_distance) + qdel(src) + return + return ..() + +/obj/effect/immovablerod/driveshaft/penetrate(mob/living/penetrated) + penetrated.visible_message( + span_danger("[penetrated] is penetrated by a hyperspaced driveshaft!"), + span_userdanger("The [src] penetrates you!"), + span_danger("You hear a CRANG!"), + ) + penetrated.adjustBruteLoss(50) + + +/////////////////////// +/////Damage Events///// +/////////////////////// + /obj/vehicle/sealed/car/cheburek/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() if(prob(50)) - switch(rand(1,2)) + switch(rand(1,3)) if(1) - visible_message(span_danger("[src] spews out a ton of oil!")) //engine leak + visible_message(span_danger("[src] spews out a ton of oil!")) // engine oil leak (danger flammable!) RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(cover_in_oil)) addtimer(CALLBACK(src, PROC_REF(stop_dropping_oil)), 1 SECONDS) if(2) visible_message(span_danger("Semki packet drops out of [src].")) new /obj/item/food/semki(loc) + if(3) + visible_message(span_danger("[src] spews out a ton of fuel!")) // fuel tank leak (danger really flammable!) + RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(cover_in_fuel)) + addtimer(CALLBACK(src, PROC_REF(stop_dropping_fuel)), 1 SECONDS) ///Leak oil when the cheburek moves if was damaged /obj/vehicle/sealed/car/cheburek/proc/cover_in_oil() @@ -96,21 +195,75 @@ /obj/vehicle/sealed/car/cheburek/proc/stop_dropping_oil() UnregisterSignal(src, COMSIG_MOVABLE_MOVED) -/obj/vehicle/sealed/car/cheburek/attacked_by(obj/item/I, mob/living/user) +///Leak fuel when the cheburek moves if was damaged +/obj/vehicle/sealed/car/cheburek/proc/cover_in_fuel() + SIGNAL_HANDLER + new /obj/effect/decal/cleanable/fuel_pool(loc) + +///Stops dropping fuel after the time has run up +/obj/vehicle/sealed/car/cheburek/proc/stop_dropping_fuel() + UnregisterSignal(src, COMSIG_MOVABLE_MOVED) + +/obj/vehicle/sealed/car/cheburek/attacked_by(obj/item/item, mob/living/user) . = ..() - if(istype(I, /obj/item/food/semki)) - var/obj/item/food/semki/semki = I + if(istype(item, /obj/item/food/semki)) + var/obj/item/food/semki/semki = item atom_integrity += min(50, max_integrity-atom_integrity) to_chat(user, span_danger("You use the [semki] to repair [src]!")) qdel(semki) -/obj/vehicle/sealed/car/cheburek/wrench_act(mob/living/user, obj/item/W) +////////////////////////////////////////////////////// +/////Actions with objects (emag, crowbar, wrench)///// +////////////////////////////////////////////////////// + +/obj/vehicle/sealed/car/cheburek/emag_act(mob/user, obj/item/card/emag/emag_card) + if(obj_flags & EMAGGED) + return FALSE + obj_flags |= EMAGGED + add_overlay(image(icon, "car_stickers", ABOVE_MOB_LAYER)) // you can't rewert it + if(bonnet_isopen) + add_overlay(image(icon, "open_bonnet_stickers", ABOVE_MOB_LAYER)) + else + add_overlay(image(icon, "close_bonnet_stickers", ABOVE_MOB_LAYER)) + playsound(src, 'massmeta/sounds/vehicles/gopnik_laught.ogg', 66) + balloon_alert(user, "Some odd insulating tape appeared on [src].") + visible_message(span_userdanger("You hear a terrible roar from under the bottom of the car")) + name = "Cheburek Chad" + desc = "This is a verified Slavic Сar, that's all you need to know" + initialize_controller_action_type(/datum/action/vehicle/sealed/gopnik, VEHICLE_CONTROL_DRIVE) // oh no... + +/obj/vehicle/sealed/car/cheburek/crowbar_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return + . = TRUE + // add fov? + + if(tool.use_tool(src, user, 0.5 SECONDS, volume=20)) + if(bonnet_isopen) + bonnet_isopen = !bonnet_isopen + cut_overlay(image(icon, "car_openbonnet", LYING_MOB_LAYER)) + if(obj_flags & EMAGGED) + cut_overlay(image(icon, "open_bonnet_stickers", ABOVE_MOB_LAYER)) + add_overlay(image(icon, "close_bonnet_stickers", ABOVE_MOB_LAYER)) + playsound(src, 'massmeta/sounds/vehicles/close_bonnet.ogg', 50) + else + bonnet_isopen = !bonnet_isopen + add_overlay(image(icon, "car_openbonnet", LYING_MOB_LAYER)) + if(obj_flags & EMAGGED) + cut_overlay(image(icon, "close_bonnet_stickers", ABOVE_MOB_LAYER)) + add_overlay(image(icon, "open_bonnet_stickers", ABOVE_MOB_LAYER)) + playsound(src, 'massmeta/sounds/vehicles/open_bonnet.ogg', 50) + +/obj/vehicle/sealed/car/cheburek/wrench_act(mob/living/user, obj/item/tool) if(user.combat_mode) return . = TRUE if(DOING_INTERACTION(user, src)) balloon_alert(user, "you're already repairing gearbox!") return + if(!bonnet_isopen) + balloon_alert(user, "open bonnet firstly") + return if(gearbox_failure_count <= 1) balloon_alert(user, "it's not damaged!") return @@ -118,12 +271,21 @@ audible_message(span_hear("You hear the bolts and nuts falling onto the floor.")) var/did_the_thing while(gearbox_failure_count > 1) - if(W.use_tool(src, user, 2.5 SECONDS, volume=50)) + if(tool.use_tool(src, user, 2.5 SECONDS, volume=50)) did_the_thing = TRUE gearbox_failure_count-- canmove = TRUE audible_message(span_hear("You hear odd metal noises.")) - user.say(pick("Ух пипец", "Мда, капец", "Шо за дела...", "ЪУЪ", "ДА как?!?!", "Звиздец", "Будь проклят тот день, когда я сел за баранку этого пылесоса!", "Уфффффф, ну и ну...", "А где этот винтик?", "А это куда вставлять?..", "Чё за?!")) + if(prob(5)) + user.visible_message( + span_warning("[user] pinched his finger in gears"), + span_userdanger("In a moment you feel extremly pain in you finger"), + span_hear("You hear how idiot is screaming"), + ) + user.apply_damage(20, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + user.apply_damage(40, STAMINA) + user.emote("scream") + else break if(did_the_thing) @@ -131,28 +293,59 @@ else user.balloon_alert_to_viewers("stopped fixing gearbox of [src]", "interrupted the repair!") +//////////////////////////////// +/////Some Meme (after emag)///// +//////////////////////////////// + /obj/vehicle/sealed/car/cheburek/proc/toggle_gopmode(mob/user) + if(gopmode) + switch(last_chosen_meme) + if(1) + cut_overlay(image(icon, "some_meme_1", LYING_MOB_LAYER)) + if(2) + cut_overlay(image(icon, "some_meme_2", LYING_MOB_LAYER)) - 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) + cut_overlay(image(icon, "i_drive", LYING_MOB_LAYER)) + visible_message(span_userdanger("I Not Drive.")) + RemoveElement(/datum/element/waddling) 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 - + vehicle_move_delay = 1.5 -/obj/vehicle/sealed/car/cheburek/proc/increase_gop_gear(mob/user) - - if(gopgear < 3) - if(prob(gearbox_failure_count*10) || prob(50)) + else + switch(rand(1,2)) + if(1) + add_overlay(image(icon, "some_meme_1", LYING_MOB_LAYER)) + last_chosen_meme = 1 + if(2) + add_overlay(image(icon, "some_meme_2", LYING_MOB_LAYER)) + last_chosen_meme = 2 + + visible_message(span_userdanger("I Drive.")) + AddElement(/datum/element/waddling) + gopmode = TRUE // oh fuck... + vehicle_move_delay = 5 // too much lags on higher speed + gopgear = 1 + +////////////////////////////// +/////Gearbox interactions///// +////////////////////////////// + +/obj/vehicle/sealed/car/cheburek/proc/increase_gear(mob/user) + if(gopmode) + visible_message(span_boldwarning("RUN! RUN!")) + return + if(gopgear == 0 && gearbox_failure_count != 10) + canmove = TRUE + playsound(src, 'massmeta/sounds/vehicles/emergency_brake_release.ogg', 100) + vehicle_move_delay -= 0.5 + gopgear++ + return + if(gopgear < 4) + if(prob(gearbox_failure_count * 10) || prob(33)) if(gearbox_failure_count == 10) if(canmove) - playsound(src, pick('massmeta/sounds/vehicles/gear_blyat.ogg', 'massmeta/sounds/vehicles/gear_nah.ogg'), 50) - toggle_gop_turn() + playsound(src, pick('massmeta/sounds/vehicles/gear_blyat.ogg', 'massmeta/sounds/vehicles/gear_nah.ogg'), 100) + toggle_blinkers() canmove = FALSE balloon_alert(user, "Gearbox broken") else @@ -164,18 +357,26 @@ playsound(src, 'sound/mecha/mechmove04.ogg', 75) vehicle_move_delay -= 0.5 - gopgear += 1 + gopgear++ else balloon_alert(user, "[src] already on maximum gear!") -/obj/vehicle/sealed/car/cheburek/proc/decrease_gop_gear(mob/user) - - if(gopgear > 0) - if(prob(gearbox_failure_count*10) || prob(50)) +/obj/vehicle/sealed/car/cheburek/proc/decrease_gear(mob/user) + if(gopmode) + visible_message(span_boldwarning("RUN! RUN!")) + return + if(gopgear == 1 && gearbox_failure_count != 10) + canmove = FALSE + playsound(src, 'massmeta/sounds/vehicles/emergency_brake_pull.ogg', 100) + vehicle_move_delay += 0.5 + gopgear-- + return + if(gopgear > 1) + if(prob(gearbox_failure_count * 10) || prob(33)) if(gearbox_failure_count == 10) if(canmove) - playsound(src, pick('massmeta/sounds/vehicles/gear_blyat.ogg', 'massmeta/sounds/vehicles/gear_nah.ogg'), 50) - toggle_gop_turn() + playsound(src, pick('massmeta/sounds/vehicles/gear_blyat.ogg', 'massmeta/sounds/vehicles/gear_nah.ogg'), 100) + toggle_blinkers() canmove = FALSE balloon_alert(user, "Gearbox broken") else @@ -187,49 +388,44 @@ playsound(src, 'sound/mecha/mechmove04.ogg', 75) vehicle_move_delay += 0.5 - gopgear -= 1 + gopgear-- else - balloon_alert(user, "[src] already on minumum gear!") - + balloon_alert(user, "[src] already on parking mode!") /obj/vehicle/sealed/car/cheburek/proc/revert_waddling() - visible_message(span_danger("Uhh, gear finnaly shifted on [src]...")) RemoveElement(/datum/element/waddling) +///////////////////////////////// +/////Headlights and Blinkers///// +///////////////////////////////// /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) - +/obj/vehicle/sealed/car/cheburek/proc/toggle_blinkers(mob/user) isturnsound_on = !isturnsound_on - // start point of endless tiks + // start point of endless tiks (blinkers) addtimer(CALLBACK(src, PROC_REF(endless_tik)), 0.5 SECONDS) - /obj/vehicle/sealed/car/cheburek/proc/endless_tik() - if(isturnsound_on) playsound(src, 'massmeta/sounds/vehicles/car_turn_signal.ogg', 60) + //update_overlays() cut_overlay(image(icon, "car_blinkers", LYING_MOB_LAYER)) blinkers_on = FALSE - addtimer(CALLBACK(src, PROC_REF(endless_tak)), 0.5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(endless_tak)), 0.7 SECONDS) else if(blinkers_on) cut_overlay(image(icon, "car_blinkers", LYING_MOB_LAYER)) blinkers_on = FALSE - /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)) blinkers_on = TRUE - addtimer(CALLBACK(src, PROC_REF(endless_tik)), 0.5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(endless_tik)), 0.3 SECONDS) diff --git a/massmeta/code/modules/vehicles/vehicle_actions.dm b/massmeta/code/modules/vehicles/vehicle_actions.dm index dd7b9d01bd860..a6074f5f3294d 100644 --- a/massmeta/code/modules/vehicles/vehicle_actions.dm +++ b/massmeta/code/modules/vehicles/vehicle_actions.dm @@ -1,4 +1,4 @@ -//CHEBUTEK ACTION DATUMS +//CHЁBUREK ACTION DATUMS /datum/action/vehicle/sealed/gopnik button_icon = 'massmeta/icons/mob/actions/actions_vehicle.dmi' name = "Toggle Gop Mode" @@ -15,44 +15,44 @@ var/obj/vehicle/sealed/car/cheburek/C = vehicle_entered_target C.toggle_gopmode(owner) -/datum/action/vehicle/sealed/gopnik_gear_up +/datum/action/vehicle/sealed/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" - COOLDOWN_DECLARE(gopnik_shift_up_cooldown) + COOLDOWN_DECLARE(shift_up_cooldown) -/datum/action/vehicle/sealed/gopnik_gear_up/Trigger(trigger_flags) +/datum/action/vehicle/sealed/gear_up/Trigger(trigger_flags) if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/cheburek)) return - if(!COOLDOWN_FINISHED(src, gopnik_shift_up_cooldown)) + if(!COOLDOWN_FINISHED(src, shift_up_cooldown)) return - COOLDOWN_START(src, gopnik_shift_up_cooldown, 1 SECONDS) + COOLDOWN_START(src, shift_up_cooldown, 1 SECONDS) var/obj/vehicle/sealed/car/cheburek/G = vehicle_entered_target - G.increase_gop_gear(owner) + G.increase_gear(owner) -/datum/action/vehicle/sealed/gopnik_gear_down +/datum/action/vehicle/sealed/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" - COOLDOWN_DECLARE(gopnik_shift_down_cooldown) + COOLDOWN_DECLARE(shift_down_cooldown) -/datum/action/vehicle/sealed/gopnik_gear_down/Trigger(trigger_flags) +/datum/action/vehicle/sealed/gear_down/Trigger(trigger_flags) if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/cheburek)) return - if(!COOLDOWN_FINISHED(src, gopnik_shift_down_cooldown)) + if(!COOLDOWN_FINISHED(src, shift_down_cooldown)) return - COOLDOWN_START(src, gopnik_shift_down_cooldown, 1 SECONDS) + COOLDOWN_START(src, shift_down_cooldown, 1 SECONDS) var/obj/vehicle/sealed/car/cheburek/G = vehicle_entered_target - G.decrease_gop_gear(owner) + G.decrease_gear(owner) -/datum/action/vehicle/sealed/gop_headlights +/datum/action/vehicle/sealed/headlights name = "Toggle Headlights" desc = "Turn on your brights!" button_icon_state = "car_headlights" -/datum/action/vehicle/sealed/gop_headlights/Trigger(trigger_flags) +/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) @@ -61,24 +61,14 @@ var/obj/vehicle/sealed/car/cheburek/L = vehicle_entered_target L.car_lights_toggle(owner) -/datum/action/vehicle/sealed/gop_turn +/datum/action/vehicle/sealed/blinkers 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" -/datum/action/vehicle/sealed/gop_turn/Trigger(trigger_flags) +/datum/action/vehicle/sealed/blinkers/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 - owner.say("Блять!") // yes, without delay + T.toggle_blinkers(owner) \ No newline at end of file diff --git a/massmeta/icons/obj/anomaly.dmi b/massmeta/icons/obj/anomaly.dmi new file mode 100644 index 0000000000000..fdaed704ed2b6 Binary files /dev/null and b/massmeta/icons/obj/anomaly.dmi differ diff --git a/massmeta/icons/obj/storage/crates.dmi b/massmeta/icons/obj/storage/crates.dmi new file mode 100644 index 0000000000000..06a5356948439 Binary files /dev/null and b/massmeta/icons/obj/storage/crates.dmi differ diff --git a/massmeta/icons/obj/toys/shaha.dmi b/massmeta/icons/obj/toys/shaha.dmi index 06e958c1d2e13..90795dbd09a77 100644 Binary files a/massmeta/icons/obj/toys/shaha.dmi and b/massmeta/icons/obj/toys/shaha.dmi differ diff --git a/massmeta/includes.dm b/massmeta/includes.dm index 343c2d4c89db7..176bc7086a4de 100644 --- a/massmeta/includes.dm +++ b/massmeta/includes.dm @@ -67,10 +67,15 @@ #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" #include "code\modules\map_vote.dm" #include "code\modules\hallucination\fake_chat.dm" + +//cheburek Car +#include "code\modules\vehicles\cars\cheburek.dm" +#include "code\modules\vehicles\vehicle_actions.dm" +#include "code\game\objects\structures\crates_lockers\crates\large.dm" +#include "code\modules\cargo\packs\imports.dm" + //species secondary color #include "code\modules\client\preferences\species_features\mutants_color_secondary.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\multi_part.dm" diff --git a/massmeta/sounds/vehicles/car_turn_signal.ogg b/massmeta/sounds/vehicles/car_turn_signal.ogg index fd0fc639036f7..8e7e7eda8ae22 100644 Binary files a/massmeta/sounds/vehicles/car_turn_signal.ogg and b/massmeta/sounds/vehicles/car_turn_signal.ogg differ diff --git a/massmeta/sounds/vehicles/close_bonnet.ogg b/massmeta/sounds/vehicles/close_bonnet.ogg new file mode 100644 index 0000000000000..ea610f66f3e78 Binary files /dev/null and b/massmeta/sounds/vehicles/close_bonnet.ogg differ diff --git a/massmeta/sounds/vehicles/emergency_brake_pull.ogg b/massmeta/sounds/vehicles/emergency_brake_pull.ogg new file mode 100644 index 0000000000000..b4ed080fd5d66 Binary files /dev/null and b/massmeta/sounds/vehicles/emergency_brake_pull.ogg differ diff --git a/massmeta/sounds/vehicles/emergency_brake_release.ogg b/massmeta/sounds/vehicles/emergency_brake_release.ogg new file mode 100644 index 0000000000000..9add01ebcdbd0 Binary files /dev/null and b/massmeta/sounds/vehicles/emergency_brake_release.ogg differ diff --git a/massmeta/sounds/vehicles/gopnik_laught.ogg b/massmeta/sounds/vehicles/gopnik_laught.ogg new file mode 100644 index 0000000000000..929adc792b4ba Binary files /dev/null and b/massmeta/sounds/vehicles/gopnik_laught.ogg differ diff --git a/massmeta/sounds/vehicles/open_bonnet.ogg b/massmeta/sounds/vehicles/open_bonnet.ogg new file mode 100644 index 0000000000000..9793fdfdaf391 Binary files /dev/null and b/massmeta/sounds/vehicles/open_bonnet.ogg differ