From 0b7e51473947f405ebcc04fc63fd3bda6c434324 Mon Sep 17 00:00:00 2001 From: LetterN <24603524+LetterN@users.noreply.github.com> Date: Sun, 19 Sep 2021 14:05:28 +0800 Subject: [PATCH] t --- code/__DEFINES/achievements.dm | 19 ++ code/__DEFINES/colors.dm | 1 + code/__DEFINES/cooldowns.dm | 5 + code/__DEFINES/vehicles.dm | 23 +- code/datums/achievements/_achievement_data.dm | 2 +- code/datums/achievements/_awards.dm | 4 +- code/datums/achievements/boss_achievements.dm | 2 +- code/datums/achievements/job_achievements.dm | 34 +++ code/datums/achievements/job_scores.dm | 14 + code/datums/achievements/misc_achievements.dm | 22 +- code/datums/achievements/misc_scores.dm | 6 + code/game/objects/items/plushes.dm | 73 +++--- code/game/objects/items/storage/toolbox.dm | 5 +- .../eldritch_cult/knowledge/flesh_lore.dm | 18 +- .../eldritch_cult/knowledge/rust_lore.dm | 2 +- .../eldritch_cult/knowledge/void_lore.dm | 16 +- .../antagonists/wizard/equipment/soulstone.dm | 37 +++ .../mob/living/simple_animal/hostile/carp.dm | 78 +++++- .../hostile/megafauna/wendigo.dm | 3 + code/modules/vehicles/_vehicle.dm | 4 +- code/modules/vehicles/cars/car.dm | 2 +- code/modules/vehicles/cars/clowncar.dm | 239 +++++++++++++----- code/modules/vehicles/vehicle_actions.dm | 82 ++++-- sound/vehicles/carcannon1.ogg | Bin 0 -> 12716 bytes sound/vehicles/carcannon2.ogg | Bin 0 -> 11751 bytes sound/vehicles/carcannon3.ogg | Bin 0 -> 14069 bytes sound/vehicles/clowncar_cannonmode1.ogg | Bin 0 -> 23983 bytes sound/vehicles/clowncar_cannonmode2.ogg | Bin 0 -> 22347 bytes tgstation.dme | 2 + 29 files changed, 513 insertions(+), 180 deletions(-) create mode 100644 code/datums/achievements/job_achievements.dm create mode 100644 code/datums/achievements/job_scores.dm create mode 100644 sound/vehicles/carcannon1.ogg create mode 100644 sound/vehicles/carcannon2.ogg create mode 100644 sound/vehicles/carcannon3.ogg create mode 100644 sound/vehicles/clowncar_cannonmode1.ogg create mode 100644 sound/vehicles/clowncar_cannonmode2.ogg diff --git a/code/__DEFINES/achievements.dm b/code/__DEFINES/achievements.dm index c39531971c..20c68c015b 100644 --- a/code/__DEFINES/achievements.dm +++ b/code/__DEFINES/achievements.dm @@ -32,6 +32,9 @@ #define MEDAL_VOID_ASCENSION "Void" #define MEDAL_TOOLBOX_SOUL "Toolsoul" #define MEDAL_CHEM_TUT "Beginner Chemist" +#define MEDAL_HOT_DAMN "Hot Damn!" +#define MEDAL_CAYENNE_DISK "Very Important Piscis" +#define MEDAL_TRAM_SURFER "Tram Surfer" //Skill medal hub IDs #define MEDAL_LEGENDARY_MINER "Legendary Miner" @@ -106,3 +109,19 @@ // DB ID for amount of consumed maintenance pills #define MAINTENANCE_PILL_SCORE "Maintenance Pill Score" + +// DB ID for intento score +#define INTENTO_SCORE "Intento Score" + +// Tourist related achievements and scores + +//centcom grades (achievement) + +#define MEDAL_BAD_SERVICE "Bad Service" +#define MEDAL_OKAY_SERVICE "Okay Service" +#define MEDAL_GOOD_SERVICE "Good Service" + +//scores + +#define CHEF_TOURISTS_SERVED "Tourists Served As Chef" +#define BARTENDER_TOURISTS_SERVED "Tourists Served As Bartender" diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index db78144689..04c91cfb9d 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -59,3 +59,4 @@ #define COLOR_SILVER "#C0C0C0" #define COLOR_GRAY "#808080" #define COLOR_HALF_TRANSPARENT_BLACK "#0000007A" +#define COLOR_BRIGHT_BLUE "#2CB2E8" diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm index 29c7a25dad..92231d3998 100644 --- a/code/__DEFINES/cooldowns.dm +++ b/code/__DEFINES/cooldowns.dm @@ -28,6 +28,11 @@ //INDEXES #define COOLDOWN_EMPLOYMENT_CABINET "employment cabinet" +//car cooldowns +#define COOLDOWN_CAR_HONK "car_honk" + +//clown car cooldowns +#define COOLDOWN_CLOWNCAR_RANDOMNESS "clown_car_randomness" //TIMER COOLDOWN MACROS diff --git a/code/__DEFINES/vehicles.dm b/code/__DEFINES/vehicles.dm index 48383546b9..1ff14f9506 100644 --- a/code/__DEFINES/vehicles.dm +++ b/code/__DEFINES/vehicles.dm @@ -1,9 +1,20 @@ -//Vehicle control flags +//Vehicle control flags. control flags describe access to actions in a vehicle. -#define VEHICLE_CONTROL_PERMISSION 1 -#define VEHICLE_CONTROL_DRIVE 2 -#define VEHICLE_CONTROL_KIDNAPPED 4 //Can't leave vehicle voluntarily, has to resist. +///controls the vehicles movement +#define VEHICLE_CONTROL_DRIVE (1<<0) +///Can't leave vehicle voluntarily, has to resist. +#define VEHICLE_CONTROL_KIDNAPPED (1<<1) +///melee attacks/shoves a vehicle may have +#define VEHICLE_CONTROL_MELEE (1<<2) +///using equipment/weapons on the vehicle +#define VEHICLE_CONTROL_EQUIPMENT (1<<3) +///changing around settings and the like. +#define VEHICLE_CONTROL_SETTINGS (1<<4) +//car_traits flags +///Will this car kidnap people by ramming into them? +#define CAN_KIDNAP (1<<0) -//Car trait flags -#define CAN_KIDNAP 1 +#define CLOWN_CANNON_INACTIVE 0 +#define CLOWN_CANNON_BUSY 1 +#define CLOWN_CANNON_READY 2 diff --git a/code/datums/achievements/_achievement_data.dm b/code/datums/achievements/_achievement_data.dm index 80f544a965..12c8256c74 100644 --- a/code/datums/achievements/_achievement_data.dm +++ b/code/datums/achievements/_achievement_data.dm @@ -109,7 +109,7 @@ /datum/achievement_data/ui_data(mob/user) var/ret_data = list() // screw standards (qustinnus you must rename src.data ok) - ret_data["categories"] = list("Bosses", "Misc", "Mafia", "Scores") + ret_data["categories"] = list("Bosses", "Jobs", "Misc", "Mafia", "Scores") ret_data["achievements"] = list() ret_data["user_key"] = user.ckey diff --git a/code/datums/achievements/_awards.dm b/code/datums/achievements/_awards.dm index 77485de8ba..22296b90f5 100644 --- a/code/datums/achievements/_awards.dm +++ b/code/datums/achievements/_awards.dm @@ -2,7 +2,7 @@ ///Name of the achievement, If null it won't show up in the achievement browser. (Handy for inheritance trees) var/name var/desc = "You did it." - ///Found in UI_Icons/Achievements + ///Found in ui_icons/achievements var/icon = "default" var/category = "Normal" @@ -78,7 +78,7 @@ /datum/award/achievement/on_unlock(mob/user) . = ..() - to_chat(user, "Achievement unlocked: [name]!") + to_chat(user, span_greenannounce("Achievement unlocked: [name]!")) ///Scores are for leaderboarded things, such as killcount of a specific boss /datum/award/score diff --git a/code/datums/achievements/boss_achievements.dm b/code/datums/achievements/boss_achievements.dm index 104a369405..f2ff90945f 100644 --- a/code/datums/achievements/boss_achievements.dm +++ b/code/datums/achievements/boss_achievements.dm @@ -12,7 +12,7 @@ name = "Boss Killer" desc = "You've come a long ways from asking how to switch hands." database_id = "Boss Killer" - // icon = "firstboss" + icon = "firstboss" /datum/award/achievement/boss/blood_miner_kill name = "Blood-Drunk Miner Killer" diff --git a/code/datums/achievements/job_achievements.dm b/code/datums/achievements/job_achievements.dm new file mode 100644 index 0000000000..13a68462ed --- /dev/null +++ b/code/datums/achievements/job_achievements.dm @@ -0,0 +1,34 @@ + +/datum/award/achievement/jobs + category = "Jobs" + icon = "basemisc" + +//chemistry + +/datum/award/achievement/jobs/chemistry_tut + name = "Perfect chemistry blossom" + desc = "Passed the chemistry tutorial with perfect purity!" + database_id = MEDAL_CHEM_TUT + icon = "chem_tut" + +//all of service! hip hip! + +/datum/award/achievement/jobs/service_bad + name = "Centcom Grade: Shitty Service" + desc = "Well, you at least tried. How about trying harder?" + database_id = MEDAL_BAD_SERVICE + icon = "chem_tut" + +/datum/award/achievement/jobs/service_okay + name = "Centcom Grade: Acceptable Service" + desc = "Well, it'll do! You and your department did just fine." + database_id = MEDAL_OKAY_SERVICE + icon = "chem_tut" + +/datum/award/achievement/jobs/service_good + name = "Centcom Grade: Exemplary Service" + desc = "Centcom is very impressed with your department!" + database_id = MEDAL_GOOD_SERVICE + icon = "chem_tut" + +//civilian achievies! while not recognized by the code, it is recognized by our hearts diff --git a/code/datums/achievements/job_scores.dm b/code/datums/achievements/job_scores.dm new file mode 100644 index 0000000000..d860c7e21a --- /dev/null +++ b/code/datums/achievements/job_scores.dm @@ -0,0 +1,14 @@ + +//chef + +/datum/award/score/chef_tourist_score + name = "Tourists Served as Chef Highscore" + desc = "Your highscore on serving tourist bots as chef." + database_id = CHEF_TOURISTS_SERVED + +//bartender + +/datum/award/score/bartender_tourist_score + name = "Tourists Served as Bartender Highscore" + desc = "Your highscore on serving tourist bots as bartender." + database_id = BARTENDER_TOURISTS_SERVED diff --git a/code/datums/achievements/misc_achievements.dm b/code/datums/achievements/misc_achievements.dm index 0da38df8f3..5ad337445b 100644 --- a/code/datums/achievements/misc_achievements.dm +++ b/code/datums/achievements/misc_achievements.dm @@ -154,8 +154,20 @@ database_id = MEDAL_TOOLBOX_SOUL icon = "toolbox_soul" -/datum/award/achievement/misc/chemistry_tut - name = "Perfect chemistry blossom" - desc = "Passed the chemistry tutorial with perfect purity!" - database_id = MEDAL_CHEM_TUT - icon = "chem_tut" +/datum/award/achievement/misc/hot_damn + name = "Hot Damn!" + desc = "Sometimes you need to make some noise to make a point." + database_id = MEDAL_HOT_DAMN + icon = "hotdamn" + +/datum/award/achievement/misc/cayenne_disk + name = "Very Important Piscis" + desc = "You can rest well now." + database_id = MEDAL_CAYENNE_DISK + icon = "cayenne_disk" + +/datum/award/achievement/misc/tram_surfer + name = "Tram Surfer" + desc = "Lights out, guerilla radio!" + database_id = MEDAL_TRAM_SURFER + icon = "tram_surfer" diff --git a/code/datums/achievements/misc_scores.dm b/code/datums/achievements/misc_scores.dm index 7ffc50c015..067cd68d7d 100644 --- a/code/datums/achievements/misc_scores.dm +++ b/code/datums/achievements/misc_scores.dm @@ -9,3 +9,9 @@ name = "Maintenance Pills Consumed" desc = "Wait why?" database_id = MAINTENANCE_PILL_SCORE + +///How high of a score on the Intento did we get? +/datum/award/score/intento_score + name = "Intento Score" + desc = "A blast from the future?" + database_id = INTENTO_SCORE diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 59464d25a7..683232b540 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -238,72 +238,73 @@ return return ..() -/obj/item/toy/plush/proc/love(obj/item/toy/plush/Kisser, mob/living/user) //~<3 - var/chance = 100 //to steal a kiss, surely there's a 100% chance no-one would reject a plush such as I? - var/concern = 20 //perhaps something might cloud true love with doubt - var/loyalty = 30 //why should another get between us? - var/duty = 50 //conquering another's is what I live for +/obj/item/toy/plush/proc/love(obj/item/toy/plush/Kisser, mob/living/user) //~<3 + var/chance = 100 //to steal a kiss, surely there's a 100% chance no-one would reject a plush such as I? + var/concern = 20 //perhaps something might cloud true love with doubt + var/loyalty = 30 //why should another get between us? + var/duty = 50 //conquering another's is what I live for //we are not catholic if(young == TRUE || Kisser.young == TRUE) - user.show_message("[src] plays tag with [Kisser].", MSG_VISUAL, - "They're happy.", 0) + user.show_message(span_notice("[src] plays tag with [Kisser]."), MSG_VISUAL, + span_notice("They're happy."), NONE) Kisser.cheer_up() cheer_up() //never again else if(Kisser in scorned) //message, visible, alternate message, neither visible nor audible - user.show_message("[src] rejects the advances of [Kisser]!", MSG_VISUAL, - "That didn't feel like it worked.", 0) + user.show_message(span_notice("[src] rejects the advances of [Kisser]!"), MSG_VISUAL, + span_notice("That didn't feel like it worked."), NONE) else if(src in Kisser.scorned) - user.show_message("[Kisser] realises who [src] is and turns away.", MSG_VISUAL, - "That didn't feel like it worked.", 0) + user.show_message(span_notice("[Kisser] realises who [src] is and turns away."), MSG_VISUAL, + span_notice("That didn't feel like it worked."), NONE) //first comes love - else if(Kisser.lover != src && Kisser.partner != src) //cannot be lovers or married - if(Kisser.lover) //if the initiator has a lover - Kisser.lover.heartbreak(Kisser) //the old lover can get over the kiss-and-run whilst the kisser has some fun - chance -= concern //one heart already broken, what does another mean? - if(lover) //if the recipient has a lover - chance -= loyalty //mustn't... but those lips - if(partner) //if the recipient has a partner - chance -= duty //do we mate for life? + else if(Kisser.lover != src && Kisser.partner != src) //cannot be lovers or married + if(Kisser.lover) //if the initiator has a lover + Kisser.lover.heartbreak(Kisser) //the old lover can get over the kiss-and-run whilst the kisser has some fun + chance -= concern //one heart already broken, what does another mean? + if(lover) //if the recipient has a lover + chance -= loyalty //mustn't... but those lips + if(partner) //if the recipient has a partner + chance -= duty //do we mate for life? - if(prob(chance)) //did we bag a date? - user.visible_message("[user] makes [Kisser] kiss [src]!", - "You make [Kisser] kiss [src]!") - if(lover) //who cares for the past, we live in the present + if(prob(chance)) //did we bag a date? + user.visible_message(span_notice("[user] makes [Kisser] kiss [src]!"), + span_notice("You make [Kisser] kiss [src]!")) + if(lover) //who cares for the past, we live in the present lover.heartbreak(src) new_lover(Kisser) Kisser.new_lover(src) else - user.show_message("[src] rejects the advances of [Kisser], maybe next time?", MSG_VISUAL, - "That didn't feel like it worked, this time.", 0) + user.show_message(span_notice("[src] rejects the advances of [Kisser], maybe next time?"), MSG_VISUAL, + span_notice("That didn't feel like it worked, this time."), NONE) //then comes marriage - else if(Kisser.lover == src && Kisser.partner != src) //need to be lovers (assumes loving is a two way street) but not married (also assumes similar) - user.visible_message("[user] pronounces [Kisser] and [src] married! D'aw.", - "You pronounce [Kisser] and [src] married!") + else if(Kisser.lover == src && Kisser.partner != src) //need to be lovers (assumes loving is a two way street) but not married (also assumes similar) + user.visible_message(span_notice("[user] pronounces [Kisser] and [src] married! D'aw."), + span_notice("You pronounce [Kisser] and [src] married!")) new_partner(Kisser) Kisser.new_partner(src) //then comes a baby in a baby's carriage, or an adoption in an adoption's orphanage - else if(Kisser.partner == src && !plush_child) //the one advancing does not take ownership of the child and we have a one child policy in the toyshop - user.visible_message("[user] is going to break [Kisser] and [src] by bashing them like that.", - "[Kisser] passionately embraces [src] in your hands. Look away you perv!") + else if(Kisser.partner == src && !plush_child) //the one advancing does not take ownership of the child and we have a one child policy in the toyshop + user.visible_message(span_notice("[user] is going to break [Kisser] and [src] by bashing them like that."), + span_notice("[Kisser] passionately embraces [src] in your hands. Look away you perv!")) + user.client.give_award(/datum/award/achievement/misc/rule8, user) if(plop(Kisser)) - user.visible_message("Something drops at the feet of [user].", - "The miracle of oh god did that just come out of [src]?!") + user.visible_message(span_notice("Something drops at the feet of [user]."), + span_notice("The miracle of oh god did that just come out of [src]?!")) //then comes protection, or abstinence if we are catholic else if(Kisser.partner == src && plush_child) - user.visible_message("[user] makes [Kisser] nuzzle [src]!", - "You make [Kisser] nuzzle [src]!") + user.visible_message(span_notice("[user] makes [Kisser] nuzzle [src]!"), + span_notice("You make [Kisser] nuzzle [src]!")) //then oh fuck something unexpected happened else - user.show_message("[Kisser] and [src] don't know what to do with one another.", 0) + user.show_message(span_warning("[Kisser] and [src] don't know what to do with one another."), NONE) /obj/item/toy/plush/proc/heartbreak(obj/item/toy/plush/Brutus) if(lover != Brutus) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 7a067257cb..56cf50993b 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -79,6 +79,8 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) name = "mechanical toolbox" icon_state = "blue" item_state = "toolbox_blue" + /// If FALSE, someone with a ensouled soulstone can sacrifice a spirit to change the sprite of this toolbox. + var/has_soul = FALSE /obj/item/storage/toolbox/mechanical/PopulateContents() new /obj/item/screwdriver(src) @@ -93,6 +95,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) icon_state = "toolbox_blue_old" has_latches = FALSE can_rubberify = FALSE + has_soul = TRUE /obj/item/storage/toolbox/mechanical/old/heirloom name = "old, robust toolbox" //this will be named "X family toolbox" @@ -126,7 +129,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/mechanical/old/clean/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) calc_damage() ..() - + /obj/item/storage/toolbox/mechanical/old/clean/PopulateContents() new /obj/item/screwdriver(src) new /obj/item/wrench(src) diff --git a/code/modules/antagonists/eldritch_cult/knowledge/flesh_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/flesh_lore.dm index 023be4b3e7..15ac8a6cb6 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/flesh_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/flesh_lore.dm @@ -226,16 +226,16 @@ user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shed_human_form) if(!ishuman(user)) return - var/mob/living/carbon/human/H = user - H.physiology.brute_mod *= 0.5 - H.physiology.burn_mod *= 0.5 - var/datum/antagonist/heretic/heretic = user.mind.has_antag_datum(/datum/antagonist/heretic) - var/datum/eldritch_knowledge/flesh_grasp/ghoul1 = heretic.get_knowledge(/datum/eldritch_knowledge/flesh_grasp) - ghoul1.ghoul_amt *= 3 - var/datum/eldritch_knowledge/flesh_ghoul/ghoul2 = heretic.get_knowledge(/datum/eldritch_knowledge/flesh_ghoul) - ghoul2.max_amt *= 3 + var/mob/living/carbon/human/lord_of_arms = user + lord_of_arms.physiology.brute_mod *= 0.5 + lord_of_arms.physiology.burn_mod *= 0.5 + lord_of_arms.client?.give_award(/datum/award/achievement/misc/flesh_ascension, lord_of_arms) + var/datum/antagonist/heretic/heretic_datum = user.mind.has_antag_datum(/datum/antagonist/heretic) + var/datum/eldritch_knowledge/flesh_grasp/grasp_ghoul = heretic_datum.get_knowledge(/datum/eldritch_knowledge/flesh_grasp) + grasp_ghoul.ghoul_amt *= 3 + var/datum/eldritch_knowledge/flesh_ghoul/better_ghoul = heretic_datum.get_knowledge(/datum/eldritch_knowledge/flesh_ghoul) + better_ghoul.max_amt *= 3 - return ..() /datum/eldritch_knowledge/flesh_blade_upgrade_2 name = "Remembrance" diff --git a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm index 509c35261e..733b2725cb 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm @@ -181,13 +181,13 @@ var/mob/living/carbon/human/H = user H.physiology.brute_mod *= 0.5 H.physiology.burn_mod *= 0.5 + H.client?.give_award(/datum/award/achievement/misc/rust_ascension, H) priority_announce("$^@&#*$^@(#&$(@&#^$&#^@# Fear the decay, for the Rustbringer, [user.real_name] has ascended! None shall escape the corrosion! $^@&#*$^@(#&$(@&#^$&#^@#","#$^@&#*$^@(#&$(@&#^$&#^@#", 'sound/announcer/classic/spanomalies.ogg') new /datum/rust_spread(loc) var/datum/antagonist/heretic/ascension = H.mind.has_antag_datum(/datum/antagonist/heretic) ascension.ascended = TRUE return ..() - /datum/eldritch_knowledge/final/rust_final/on_life(mob/user) . = ..() if(!finished) diff --git a/code/modules/antagonists/eldritch_cult/knowledge/void_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/void_lore.dm index 97b5af0f4d..dcbc01b046 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/void_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/void_lore.dm @@ -183,14 +183,14 @@ var/datum/weather/void_storm/storm /datum/eldritch_knowledge/final/void_final/on_finished_recipe(mob/living/user, list/atoms, loc) - var/mob/living/carbon/human/H = user - user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/repulse/eldritch) - H.physiology.brute_mod *= 0.5 - H.physiology.burn_mod *= 0.5 - ADD_TRAIT(H, TRAIT_RESISTLOWPRESSURE, MAGIC_TRAIT) - priority_announce("$^@&#*$^@(#&$(@&#^$&#^@# The nobleman of void [H.real_name] has arrived, step along the Waltz that ends worlds! $^@&#*$^@(#&$(@&#^$&#^@#","#$^@&#*$^@(#&$(@&#^$&#^@#", 'sound/announcer/classic/spanomalies.ogg') - - sound_loop = new(list(user),TRUE,TRUE) + var/mob/living/carbon/human/waltzing = user + waltzing.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/repulse/eldritch) + waltzing.physiology.brute_mod *= 0.5 + waltzing.physiology.burn_mod *= 0.5 + ADD_TRAIT(waltzing, TRAIT_RESISTLOWPRESSURE, MAGIC_TRAIT) + waltzing.client?.give_award(/datum/award/achievement/misc/void_ascension, waltzing) + priority_announce("$^@&#*$^@(#&$(@&#^$&#^@# The nobleman of void [waltzing.real_name] has arrived, step along the Waltz that ends worlds! $^@&#*$^@(#&$(@&#^$&#^@#","#$^@&#*$^@(#&$(@&#^$&#^@#", 'sound/announcer/classic/spanomalies.ogg') + sound_loop = new(user, TRUE, TRUE) return ..() /datum/eldritch_knowledge/final/void_final/on_death() diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index d4d70cd053..fe9770e64a 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -50,6 +50,14 @@ A.death() return ..() +/obj/item/soulstone/proc/hot_potato(mob/living/user) + to_chat(user, span_userdanger("Holy magics residing in \the [src] burn your hand!")) + var/obj/item/bodypart/affecting = user.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm") + affecting.receive_damage( 0, 10 ) // 10 burn damage + user.emote("scream") + user.update_damage_overlays() + user.dropItemToGround(src) + //////////////////////////////Capturing//////////////////////////////////////////////////////// /obj/item/soulstone/attack(mob/living/carbon/human/M, mob/living/user) @@ -94,6 +102,35 @@ to_chat(A, "You have been released from your prison, but you are still bound to the cult's will. Help them succeed in their goals at all costs.") was_used() +/obj/item/soulstone/pre_attack(atom/A, mob/living/user, params) + var/mob/living/simple_animal/hostile/construct/shade/occupant = (locate() in src) + var/obj/item/storage/toolbox/mechanical/target_toolbox = A + if(!occupant || !istype(target_toolbox) || target_toolbox.has_soul) + return ..() + + if(iscultist(user)) + hot_potato(user) + return + if(!iscultist(user, TRUE) && !iswizard(user) && !usability) + user.Unconscious(10 SECONDS) + to_chat(user, span_userdanger("Your body is wracked with debilitating pain!")) + return + + user.visible_message("[user] holds [src] above [user.p_their()] head and forces it into [target_toolbox] with a flash of light!", \ + span_notice("You hold [src] above your head briefly, then force it into [target_toolbox], transferring the [occupant]'s soul!"), ignored_mobs = occupant) + to_chat(occupant, span_userdanger("[user] holds you up briefly, then forces you into [target_toolbox]!")) + to_chat(occupant, span_deadsay("Your eternal soul has been sacrificed to restore the soul of a toolbox. Them's the breaks!")) + + occupant.client?.give_award(/datum/award/achievement/misc/toolbox_soul, occupant) + occupant.deathmessage = "shrieks out in unholy pain as [occupant.p_their()] soul is absorbed into [target_toolbox]!" + release_shades(user, TRUE) + occupant.death() + + target_toolbox.name = "soulful toolbox" + target_toolbox.icon_state = "toolbox_blue_old" + target_toolbox.has_soul = TRUE + target_toolbox.has_latches = FALSE + ///////////////////////////Transferring to constructs///////////////////////////////////////////////////// /obj/structure/constructshell name = "empty shell" diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 8388d6501a..747abb4b19 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -95,20 +95,78 @@ /mob/living/simple_animal/hostile/carp/cayenne name = "Cayenne" + real_name = "Cayenne" desc = "A failed Syndicate experiment in weaponized space carp technology, it now serves as a lovable mascot." gender = FEMALE - regen_amount = 8 - speak_emote = list("squeaks") - maxHealth = 90 - health = 90 - gold_core_spawnable = NO_SPAWN - faction = list(ROLE_SYNDICATE, "carp") //They are still a carp AIStatus = AI_OFF + gold_core_spawnable = NO_SPAWN + faction = list(ROLE_SYNDICATE) + /// Keeping track of the nuke disk for the functionality of storing it. + var/obj/item/disk/nuclear/disky + /// Location of the file storing disk overlays + // var/icon/disk_overlay_file = 'icons/mob/carp.dmi' + /// Colored disk mouth appearance for adding it as a mouth overlay + var/mutable_appearance/colored_disk_mouth - harm_intent_damage = 12 - obj_damage = 70 - melee_damage_lower = 15 - melee_damage_upper = 18 +/mob/living/simple_animal/hostile/carp/cayenne/Initialize() + . = ..() + // AddElement(/datum/element/pet_bonus, "bloops happily!") + // colored_disk_mouth = mutable_appearance(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/carp/disk_mouth, greyscale_colors), "disk_mouth") + ADD_TRAIT(src, TRAIT_DISK_VERIFIER, INNATE_TRAIT) //carp can verify disky + +/mob/living/simple_animal/hostile/carp/cayenne/IsAdvancedToolUser() + return TRUE //carp SMART + +/mob/living/simple_animal/hostile/carp/cayenne/death(gibbed) + if(disky) + disky.forceMove(drop_location()) + disky = null + return ..() + +/mob/living/simple_animal/hostile/carp/cayenne/Destroy(force) + QDEL_NULL(disky) + return ..() + +/mob/living/simple_animal/hostile/carp/cayenne/examine(mob/user) + . = ..() + if(disky) + . += span_notice("Wait... is that [disky] in [p_their()] mouth?") + +/mob/living/simple_animal/hostile/carp/cayenne/AttackingTarget(atom/attacked_target) + if(istype(attacked_target, /obj/item/disk/nuclear)) + var/obj/item/disk/nuclear/potential_disky = attacked_target + if(potential_disky.anchored) + return + potential_disky.forceMove(src) + disky = potential_disky + to_chat(src, span_nicegreen("YES!! You manage to pick up [disky]. (Click anywhere to place it back down.)")) + update_icon() + if(!disky.fake) + client.give_award(/datum/award/achievement/misc/cayenne_disk, src) + return + if(disky) + if(isopenturf(attacked_target)) + to_chat(src, span_notice("You place [disky] on [attacked_target]")) + disky.forceMove(attacked_target.drop_location()) + disky = null + update_icon() + else + disky.melee_attack_chain(src, attacked_target) + return + return ..() + +/mob/living/simple_animal/hostile/carp/cayenne/Exited(atom/movable/gone, direction) + . = ..() + if(disky == gone) + disky = null + update_icon() + +/mob/living/simple_animal/hostile/carp/cayenne/update_overlays() + . = ..() + if(!disky || stat == DEAD) + return + // . += colored_disk_mouth + // . += mutable_appearance(disk_overlay_file, "disk_overlay") #undef REGENERATION_DELAY diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm index 869f29951b..938483be84 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm @@ -32,6 +32,9 @@ Difficulty: Hard wander = FALSE del_on_death = TRUE blood_volume = BLOOD_VOLUME_NORMAL + achievement_type = /datum/award/achievement/boss/wendigo_kill + crusher_achievement_type = /datum/award/achievement/boss/wendigo_crusher + score_achievement_type = /datum/award/score/wendigo_score deathmessage = "falls, shaking the ground around it" deathsound = 'sound/effects/gravhit.ogg' attack_action_types = list(/datum/action/innate/megafauna_attack/heavy_stomp, diff --git a/code/modules/vehicles/_vehicle.dm b/code/modules/vehicles/_vehicle.dm index 12e9f365d0..d0144269b7 100644 --- a/code/modules/vehicles/_vehicle.dm +++ b/code/modules/vehicles/_vehicle.dm @@ -91,9 +91,9 @@ /obj/vehicle/proc/after_add_occupant(mob/M) auto_assign_occupant_flags(M) -/obj/vehicle/proc/auto_assign_occupant_flags(mob/M) //override for each type that needs it. Default is assign driver if drivers is not at max. +/obj/vehicle/proc/auto_assign_occupant_flags(mob/M) //override for each type that needs it. Default is assign driver if drivers is not at max. if(driver_amount() < max_drivers) - add_control_flags(M, VEHICLE_CONTROL_DRIVE|VEHICLE_CONTROL_PERMISSION) + add_control_flags(M, VEHICLE_CONTROL_DRIVE) /obj/vehicle/proc/remove_occupant(mob/M) if(!istype(M)) diff --git a/code/modules/vehicles/cars/car.dm b/code/modules/vehicles/cars/car.dm index 08a7986fa3..0196abe82c 100644 --- a/code/modules/vehicles/cars/car.dm +++ b/code/modules/vehicles/cars/car.dm @@ -16,7 +16,7 @@ . = ..() initialize_controller_action_type(/datum/action/vehicle/sealed/remove_key, VEHICLE_CONTROL_DRIVE) if(car_traits & CAN_KIDNAP) - initialize_controller_action_type(/datum/action/vehicle/sealed/DumpKidnappedMobs, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/dump_kidnapped_mobs, VEHICLE_CONTROL_DRIVE) /obj/vehicle/sealed/car/driver_move(mob/user, direction) if(key_type && !is_key(inserted_key)) diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index 0b75dbf4db..c4da65a902 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -1,6 +1,6 @@ /obj/vehicle/sealed/car/clowncar name = "clown car" - desc = "How someone could even fit in there is beyond me." + desc = "How someone could even fit in there is byond me." icon_state = "clowncar" max_integrity = 150 armor = list("melee" = 70, "bullet" = 40, "laser" = 40, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) @@ -10,25 +10,36 @@ car_traits = CAN_KIDNAP key_type = /obj/item/bikehorn key_type_exact = FALSE - var/droppingoil = FALSE - var/RTDcooldown = 150 - var/lastRTDtime = 0 + ///list of headlight colors we use to pick through when we have party mode due to emag + var/headlight_colors = list(COLOR_RED, COLOR_ORANGE, COLOR_YELLOW, COLOR_LIME, COLOR_BRIGHT_BLUE, COLOR_CYAN, COLOR_PURPLE) + ///Cooldown time inbetween [/obj/vehicle/sealed/car/clowncar/proc/roll_the_dice()] usages + var/dice_cooldown_time = 150 + ///How many times kidnappers in the clown car said thanks + var/thankscount = 0 + ///Current status of the cannon, alternates between CLOWN_CANNON_INACTIVE, CLOWN_CANNON_BUSY and CLOWN_CANNON_READY + var/cannonmode = CLOWN_CANNON_INACTIVE + var/light_on = TRUE + +/obj/vehicle/sealed/car/clowncar/Initialize() + . = ..() + START_PROCESSING(SSobj,src) + +/obj/vehicle/sealed/car/clowncar/process() + if(light_on && (obj_flags & EMAGGED)) + set_light_color(pick(headlight_colors)) /obj/vehicle/sealed/car/clowncar/generate_actions() . = ..() - initialize_controller_action_type(/datum/action/vehicle/sealed/horn/clowncar, VEHICLE_CONTROL_DRIVE) - -/obj/vehicle/sealed/car/clowncar/driver_move(mob/user, direction) //Prevent it from moving onto space - if(isspaceturf(get_step(src, direction))) - return FALSE - else - return ..() + initialize_controller_action_type(/datum/action/vehicle/sealed/horn, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/thank, VEHICLE_CONTROL_KIDNAPPED) /obj/vehicle/sealed/car/clowncar/auto_assign_occupant_flags(mob/M) if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.mind && HAS_TRAIT(H.mind, TRAIT_CLOWN_MENTALITY)) //Ensures only clowns can drive the car. (Including more at once) - add_control_flags(M, VEHICLE_CONTROL_DRIVE|VEHICLE_CONTROL_PERMISSION) + add_control_flags(H, VEHICLE_CONTROL_DRIVE) + RegisterSignal(H, COMSIG_MOB_CLICKON, .proc/fire_cannon_at) + M.log_message("has entered [src] as a possible driver", LOG_ATTACK) return add_control_flags(M, VEHICLE_CONTROL_KIDNAPPED) @@ -36,106 +47,195 @@ . = ..() playsound(src, pick('sound/vehicles/clowncar_load1.ogg', 'sound/vehicles/clowncar_load2.ogg'), 75) +/obj/vehicle/sealed/car/clowncar/after_add_occupant(mob/M, control_flags) + . = ..() + if(return_controllers_with_flag(VEHICLE_CONTROL_KIDNAPPED).len >= 30) + for(var/mob/voreman as anything in return_drivers()) + voreman.client.give_award(/datum/award/achievement/misc/round_and_full, voreman) + +/obj/vehicle/sealed/car/clowncar/attack_animal(mob/living/simple_animal/user, list/modifiers) + if((user.loc != src) || user.environment_smash & (ENVIRONMENT_SMASH_WALLS|ENVIRONMENT_SMASH_RWALLS)) + return ..() + +/obj/vehicle/sealed/car/clowncar/mob_exit(mob/M, silent = FALSE, randomstep = FALSE) + . = ..() + UnregisterSignal(M, COMSIG_MOB_CLICKON) + /obj/vehicle/sealed/car/clowncar/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() if(prob(33)) - visible_message("[src] spews out a ton of space lube!") + visible_message(span_danger("[src] spews out a ton of space lube!")) new /obj/effect/particle_effect/foam(loc) //YEET -/obj/vehicle/sealed/car/clowncar/attacked_by(obj/item/I, mob/living/user, attackchain_flags = NONE, damage_multiplier = 1) +/obj/vehicle/sealed/car/clowncar/attacked_by(obj/item/I, mob/living/user) . = ..() - if(istype(I, /obj/item/reagent_containers/food/snacks/grown/banana)) - var/obj/item/reagent_containers/food/snacks/grown/banana/banana = I - obj_integrity += min(banana.seed.potency, max_integrity-obj_integrity) - to_chat(user, "You use the [banana] to repair the [src]!") - qdel(banana) + if(!istype(I, /obj/item/reagent_containers/food/snacks/grown/banana)) + return + var/obj/item/reagent_containers/food/snacks/grown/banana/banana = I + obj_integrity += min(banana.seed.potency, max_integrity-obj_integrity) + to_chat(user, span_danger("You use the [banana] to repair the [src]!")) + qdel(banana) -/obj/vehicle/sealed/car/clowncar/Bump(atom/movable/M) +/obj/vehicle/sealed/car/clowncar/Bump(atom/bumped) . = ..() - if(isliving(M)) - if(ismegafauna(M)) + if(isliving(bumped)) + if(ismegafauna(bumped)) return - var/mob/living/L = M - if(iscarbon(L)) - var/mob/living/carbon/C = L - C.DefaultCombatKnockdown(40) //I play to make sprites go horizontal - L.visible_message("[src] rams into [L] and sucks him up!") //fuck off shezza this isn't ERP. - mob_forced_enter(L) + var/mob/living/hittarget_living = bumped + if(iscarbon(hittarget_living)) + var/mob/living/carbon/carb = hittarget_living + carb.DefaultCombatKnockdown(40) //I play to make sprites go horizontal + hittarget_living.visible_message(span_warning("[src] rams into [hittarget_living] and sucks [hittarget_living.p_them()] up!")) //fuck off shezza this isn't ERP. + mob_forced_enter(hittarget_living) playsound(src, pick('sound/vehicles/clowncar_ram1.ogg', 'sound/vehicles/clowncar_ram2.ogg', 'sound/vehicles/clowncar_ram3.ogg'), 75) - else if(istype(M, /turf/closed) || istype(M, /obj/machinery/door/airlock/external)) - visible_message("[src] rams into [M] and crashes!") - playsound(src, pick('sound/vehicles/clowncar_crash1.ogg', 'sound/vehicles/clowncar_crash2.ogg'), 75) - playsound(src, 'sound/vehicles/clowncar_crashpins.ogg', 75) - DumpMobs(TRUE) + log_combat(src, hittarget_living, "sucked up") + return + if(!istype(bumped, /turf/closed)) + return + visible_message(span_warning("[src] rams into [bumped] and crashes!")) + playsound(src, pick('sound/vehicles/clowncar_crash1.ogg', 'sound/vehicles/clowncar_crash2.ogg'), 75) + playsound(src, 'sound/vehicles/clowncar_crashpins.ogg', 75) + DumpMobs(TRUE) + log_combat(src, bumped, "crashed into", null, "dumping all passengers") /obj/vehicle/sealed/car/clowncar/emag_act(mob/user) . = ..() if(obj_flags & EMAGGED) return obj_flags |= EMAGGED - to_chat(user, "You scramble the clowncar child safety lock and a panel with 6 colorful buttons appears!") - initialize_controller_action_type(/datum/action/vehicle/sealed/RollTheDice, VEHICLE_CONTROL_DRIVE) + to_chat(user, span_danger("You scramble \the [src]'s child safety lock, and a panel with six colorful buttons appears!")) + initialize_controller_action_type(/datum/action/vehicle/sealed/roll_the_dice, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/cannon, VEHICLE_CONTROL_DRIVE) return TRUE -/obj/vehicle/sealed/car/clowncar/Destroy() +/obj/vehicle/sealed/car/clowncar/obj_destruction(damage_flag) playsound(src, 'sound/vehicles/clowncar_fart.ogg', 100) + STOP_PROCESSING(SSobj,src) return ..() -/obj/vehicle/sealed/car/clowncar/after_move(direction) - . = ..() - if(droppingoil) - new /obj/effect/decal/cleanable/oil/slippery(loc) - -/obj/vehicle/sealed/car/clowncar/proc/RollTheDice(mob/user) - if(world.time - lastRTDtime < RTDcooldown) - to_chat(user, "The button panel is currently recharging.") +/** + * Plays a random funky effect + * Only available while car is emagged + * Possible effects: + * * Spawn bananapeel + * * Spawn random reagent foam + * * Make the clown car look like a singulo temporarily + * * Spawn Laughing chem gas + * * Drop oil + * * Fart and make everyone nearby laugh + */ +/obj/vehicle/sealed/car/clowncar/proc/roll_the_dice(mob/user) + if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_CLOWNCAR_RANDOMNESS)) + to_chat(user, span_notice("The button panel is currently recharging.")) return - lastRTDtime = world.time - var/randomnum = rand(1,6) - switch(randomnum) + TIMER_COOLDOWN_START(src, COOLDOWN_CLOWNCAR_RANDOMNESS, dice_cooldown_time) + switch(rand(1,6)) if(1) - visible_message("[user] has pressed one of the colorful buttons on [src] and a special banana peel drops out of it.") + visible_message(span_danger("[user] presses one of the colorful buttons on [src], and a special banana peel drops out of it.")) new /obj/item/grown/bananapeel/specialpeel(loc) if(2) - visible_message("[user] has pressed one of the colorful buttons on [src] and unknown chemicals flood out of it.") - var/datum/reagents/R = new/datum/reagents(300) - R.my_atom = src - R.add_reagent(get_random_reagent_id(), 100) + visible_message(span_danger("[user] presses one of the colorful buttons on [src], and unknown chemicals flood out of it.")) + var/datum/reagents/randomchems = new/datum/reagents(300) + randomchems.my_atom = src + randomchems.add_reagent(get_random_reagent_id(), 100) var/datum/effect_system/foam_spread/foam = new - foam.set_up(200, loc, R) + foam.set_up(200, loc, randomchems) foam.start() if(3) - visible_message("[user] has pressed one of the colorful buttons on [src] and the clown car turns on its singularity disguise system.") + visible_message(span_danger("[user] presses one of the colorful buttons on [src], and the clown car turns on its singularity disguise system.")) icon = 'icons/obj/singularity.dmi' icon_state = "singularity_s1" - addtimer(CALLBACK(src, .proc/ResetIcon), 100) + addtimer(CALLBACK(src, .proc/reset_icon), 10 SECONDS) if(4) - visible_message("[user] has pressed one of the colorful buttons on [src] and the clown car spews out a cloud of laughing gas.") - var/datum/reagents/R = new/datum/reagents(300) - R.my_atom = src - R.add_reagent(/datum/reagent/consumable/superlaughter, 50) + visible_message(span_danger("[user] presses one of the colorful buttons on [src], and the clown car spews out a cloud of laughing gas.")) + var/datum/reagents/funnychems = new/datum/reagents(300) + funnychems.my_atom = src + funnychems.add_reagent(/datum/reagent/consumable/superlaughter, 50) var/datum/effect_system/smoke_spread/chem/smoke = new() - smoke.set_up(R, 4) + smoke.set_up(funnychems, 4) smoke.attach(src) smoke.start() if(5) - visible_message("[user] has pressed one of the colorful buttons on [src] and the clown car starts dropping an oil trail.") - droppingoil = TRUE - addtimer(CALLBACK(src, .proc/StopDroppingOil), 30) + visible_message(span_danger("[user] presses one of the colorful buttons on [src], and the clown car starts dropping an oil trail.")) + RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/cover_in_oil) + addtimer(CALLBACK(src, .proc/stop_dropping_oil), 3 SECONDS) if(6) - visible_message("[user] has pressed one of the colorful buttons on [src] and the clown car lets out a comedic toot.") + visible_message(span_danger("[user] presses one of the colorful buttons on [src], and the clown car lets out a comedic toot.")) playsound(src, 'sound/vehicles/clowncar_fart.ogg', 100) for(var/mob/living/L in orange(loc, 6)) L.emote("laughs") - for(var/mob/living/L in occupants) + for(var/mob/living/L as anything in occupants) L.emote("laughs") -/obj/vehicle/sealed/car/clowncar/proc/ResetIcon() +///resets the icon and iconstate of the clowncar after it was set to singulo states +/obj/vehicle/sealed/car/clowncar/proc/reset_icon() icon = initial(icon) icon_state = initial(icon_state) -/obj/vehicle/sealed/car/clowncar/proc/StopDroppingOil() - droppingoil = FALSE +///Deploys oil when the clowncar moves in oil deploy mode +/obj/vehicle/sealed/car/clowncar/proc/cover_in_oil() + SIGNAL_HANDLER + new /obj/effect/decal/cleanable/oil/slippery(loc) + +///Stops dropping oil after the time has run up +/obj/vehicle/sealed/car/clowncar/proc/stop_dropping_oil() + UnregisterSignal(src, COMSIG_MOVABLE_MOVED) + +///Toggles the on and off state of the clown cannon that shoots random kidnapped people +/obj/vehicle/sealed/car/clowncar/proc/toggle_cannon(mob/user) + if(cannonmode == CLOWN_CANNON_BUSY) + to_chat(user, span_notice("Please wait for the vehicle to finish its current action first.")) + return + if(cannonmode) //canon active, deactivate + flick("clowncar_fromfire", src) + icon_state = "clowncar" + addtimer(CALLBACK(src, .proc/deactivate_cannon), 2 SECONDS) + playsound(src, 'sound/vehicles/clowncar_cannonmode2.ogg', 75) + visible_message(span_danger("The [src] starts going back into mobile mode.")) + else + canmove = FALSE //anchor and activate canon + flick("clowncar_tofire", src) + icon_state = "clowncar_fire" + visible_message(span_danger("The [src] opens up and reveals a large cannon.")) + addtimer(CALLBACK(src, .proc/activate_cannon), 2 SECONDS) + playsound(src, 'sound/vehicles/clowncar_cannonmode1.ogg', 75) + cannonmode = CLOWN_CANNON_BUSY + +///Finalizes canon activation +/obj/vehicle/sealed/car/clowncar/proc/activate_cannon() + // mouse_pointer = 'icons/effects/mouse_pointers/mecha_mouse.dmi' + cannonmode = CLOWN_CANNON_READY + for(var/mob/living/driver as anything in return_controllers_with_flag(VEHICLE_CONTROL_DRIVE)) + driver.update_mouse_pointer() + +///Finalizes canon deactivation +/obj/vehicle/sealed/car/clowncar/proc/deactivate_cannon() + canmove = TRUE + // mouse_pointer = null + cannonmode = CLOWN_CANNON_INACTIVE + for(var/mob/living/driver as anything in return_controllers_with_flag(VEHICLE_CONTROL_DRIVE)) + driver.update_mouse_pointer() + +///Fires the cannon where the user clicks +/obj/vehicle/sealed/car/clowncar/proc/fire_cannon_at(mob/user, atom/A, params) + SIGNAL_HANDLER + if(cannonmode != CLOWN_CANNON_READY || !length(return_controllers_with_flag(VEHICLE_CONTROL_KIDNAPPED))) + return NONE + var/mob/living/unlucky_sod = pick(return_controllers_with_flag(VEHICLE_CONTROL_KIDNAPPED)) + mob_exit(unlucky_sod, TRUE) + flick("clowncar_recoil", src) + playsound(src, pick('sound/vehicles/carcannon1.ogg', 'sound/vehicles/carcannon2.ogg', 'sound/vehicles/carcannon3.ogg'), 75) + unlucky_sod.throw_at(A, 10, 2) + log_combat(user, unlucky_sod, "fired", src, "towards [A]") //this doesn't catch if the mob hits something between the car and the target + return COMSIG_MOB_CANCEL_CLICKON + +///Increments the thanks counter every time someone thats been kidnapped thanks the driver +/obj/vehicle/sealed/car/clowncar/proc/increment_thanks_counter() + thankscount++ + if(thankscount < 100) + return + for(var/mob/busdriver as anything in return_drivers()) + busdriver.client.give_award(/datum/award/achievement/misc/the_best_driver, busdriver) /obj/vehicle/sealed/car/clowncar/twitch_plays key_type = null @@ -144,12 +244,10 @@ /obj/vehicle/sealed/car/clowncar/twitch_plays/Initialize() . = ..() AddComponent(/datum/component/twitch_plays/simple_movement) - START_PROCESSING(SSfastprocess, src) GLOB.poi_list |= src notify_ghosts("Twitch Plays: Clown Car") /obj/vehicle/sealed/car/clowncar/twitch_plays/Destroy() - STOP_PROCESSING(SSfastprocess, src) GLOB.poi_list -= src return ..() @@ -158,3 +256,4 @@ if(!dir) return driver_move(null, dir) + ..() diff --git a/code/modules/vehicles/vehicle_actions.dm b/code/modules/vehicles/vehicle_actions.dm index 5de2c8961f..8b2c72008c 100644 --- a/code/modules/vehicles/vehicle_actions.dm +++ b/code/modules/vehicles/vehicle_actions.dm @@ -126,44 +126,70 @@ desc = "Honk your classy horn." button_icon_state = "car_horn" var/hornsound = 'sound/items/carhorn.ogg' - var/last_honk_time /datum/action/vehicle/sealed/horn/Trigger() - if(world.time - last_honk_time > 20) - vehicle_entered_target.visible_message("[vehicle_entered_target] loudly honks") - to_chat(owner, "You press the vehicle's horn.") - playsound(vehicle_entered_target, hornsound, 75) - last_honk_time = world.time + if(TIMER_COOLDOWN_CHECK(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/horn/clowncar/Trigger() - if(world.time - last_honk_time > 20) - vehicle_entered_target.visible_message("[vehicle_entered_target] loudly honks") - to_chat(owner, "You press the vehicle's horn.") - last_honk_time = world.time - if(vehicle_target.inserted_key) - vehicle_target.inserted_key.attack_self(owner) //The key plays a sound - else - playsound(vehicle_entered_target, hornsound, 75) - -/datum/action/vehicle/sealed/DumpKidnappedMobs - name = "Dump kidnapped mobs" +/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/DumpKidnappedMobs/Trigger() - vehicle_entered_target.visible_message("[vehicle_entered_target] starts dumping the people inside of it.") +/datum/action/vehicle/sealed/dump_kidnapped_mobs/Trigger() + vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] starts dumping the people inside of it.")) vehicle_entered_target.DumpSpecificMobs(VEHICLE_CONTROL_KIDNAPPED) -/datum/action/vehicle/sealed/RollTheDice - name = "Press a colorful button" +/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/RollTheDice/Trigger() - if(istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) - var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target - C.RollTheDice(owner) +/datum/action/vehicle/sealed/roll_the_dice/Trigger() + 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() + 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() + 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() /datum/action/vehicle/ridden/scooter/skateboard/ollie @@ -197,7 +223,9 @@ L.Move(landing_turf, vehicle_target.dir) passtable_off(L, VEHICLE_TRAIT) V.pass_flags &= ~PASSTABLE - if(locate(/obj/structure/table) in V.loc.contents) + if((locate(/obj/structure/table) in V.loc.contents) || (locate(/obj/structure/fluff/railing) in V.loc.contents)) + if(locate(/obj/structure/fluff/railing) in V.loc.contents) + L.client.give_award(/datum/award/achievement/misc/tram_surfer, L) V.grinding = TRUE V.icon_state = "[V.board_icon]-grind" addtimer(CALLBACK(V, /obj/vehicle/ridden/scooter/skateboard/.proc/grind), 2) diff --git a/sound/vehicles/carcannon1.ogg b/sound/vehicles/carcannon1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..751fa6f7546b49d2253e9dc3554cc2cea3f2cf65 GIT binary patch literal 12716 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 Z8wKnRkKlcBi2`TO8(*2CF@|TL{2%&q=&%3) literal 0 HcmV?d00001 diff --git a/sound/vehicles/carcannon2.ogg b/sound/vehicles/carcannon2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7bc86d7cbca2c744ada148add7cbeee306142c3a GIT binary patch literal 11751 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 literal 0 HcmV?d00001 diff --git a/sound/vehicles/clowncar_cannonmode1.ogg b/sound/vehicles/clowncar_cannonmode1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..aa21c8f9906ff2dc41159d6df42a76af0cd3c9eb GIT binary patch literal 23983 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 z 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 LiAFcx!1)CLf~K1a literal 0 HcmV?d00001 diff --git a/sound/vehicles/clowncar_cannonmode2.ogg b/sound/vehicles/clowncar_cannonmode2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..931e1464229c1c83fe3aa8850842dbde37c42db3 GIT binary patch literal 22347 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 mG?l>O-PQciG