diff --git a/code/modules/antagonists/heretic/magic/furious_steel.dm b/code/modules/antagonists/heretic/magic/furious_steel.dm index 19bbe36c825f..1c4186861e06 100644 --- a/code/modules/antagonists/heretic/magic/furious_steel.dm +++ b/code/modules/antagonists/heretic/magic/furious_steel.dm @@ -25,6 +25,14 @@ /// A ref to the status effect surrounding our heretic on activation. var/datum/status_effect/protective_blades/blade_effect + /// NON-MODULE CHANGE : Made to make this more modular, actually + /// Time between each blade appearing for the protective effect. + var/time_between_blades = 0.66 SECONDS + + /// NON-MODULE CHANGE + /// What status effect we apply + var/applied_status = /datum/status_effect/protective_blades + /datum/action/cooldown/spell/pointed/projectile/furious_steel/Grant(mob/grant_to) . = ..() if(!owner) @@ -67,7 +75,7 @@ QDEL_NULL(blade_effect) var/mob/living/living_user = on_who - blade_effect = living_user.apply_status_effect(/datum/status_effect/protective_blades, null, projectile_amount, 25, 0.66 SECONDS) + blade_effect = living_user.apply_status_effect(applied_status, null, projectile_amount, 25, time_between_blades) /// NON-MODULE CHANGE RegisterSignal(blade_effect, COMSIG_QDELETING, PROC_REF(on_status_effect_deleted)) /datum/action/cooldown/spell/pointed/projectile/furious_steel/on_deactivation(mob/on_who, refund_cooldown = TRUE) diff --git a/maplestation.dme b/maplestation.dme index 16445d510ef8..1be45f554f32 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6790,13 +6790,30 @@ #include "maplestation_modules\code\modules\wiremod\component_printer.dm" #include "maplestation_modules\code\modules\wiremod\shells.dm" #ifdef MAPLESTATION_STORY_CONTENT +#include "maplestation_modules\story_content\__common_story\code\story_lazy_template.dm" +#include "maplestation_modules\story_content\__common_story\code\story_rapid_status.dm" +#include "maplestation_modules\story_content\__common_story\code\story_rapid_status_datum.dm" +#include "maplestation_modules\story_content\__common_story\code\rapid_statuses\lunar_judge.dm" +#include "maplestation_modules\story_content\__common_story\code\rapid_statuses\rabid_shadowfiend.dm" +#include "maplestation_modules\story_content\__common_story\code\smites\death_from_beyond.dm" +#include "maplestation_modules\story_content\__common_story\code\spells\shadow_knife.dm" +#include "maplestation_modules\story_content\__common_story\code\spells\shadow_steel.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\areas.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\heat_blade.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\pendant.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\library\invitation.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\library\lazy_templates.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\library\weapons.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\rapid_statuses\_cosmos.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\rapid_statuses\herald_of_cosmos.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\rapid_statuses\prince_of_cosmos.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\rapid_statuses\princess_of_cosmos.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\rapid_statuses\silvered_huntress.dm" +#include "maplestation_modules\story_content\__crit_equipment\code\tevetia_spells\dark_smoke.dm" #include "maplestation_modules\story_content\albert_equipment\code\albertclothing.dm" #include "maplestation_modules\story_content\albert_equipment\code\albertitem.dm" #include "maplestation_modules\story_content\alraune_miscitems\code\alrmiscitem.dm" #include "maplestation_modules\story_content\armored_corps\code\clothing\aylie_cloak.dm" -#include "maplestation_modules\story_content\armored_corps\code\mecha_weapons\gauss_override.dm" -#include "maplestation_modules\story_content\armored_corps\code\mecha_weapons\laser_override.dm" -#include "maplestation_modules\story_content\armored_corps\code\mecha_weapons\ppc_override.dm" #include "maplestation_modules\story_content\armored_corps\code\melee\void_blade.dm" #include "maplestation_modules\story_content\bell_equipment\code\bellclothing.dm" #include "maplestation_modules\story_content\enma_equipment\code\enmaclothes.dm" diff --git a/maplestation_modules/story_content/__common_story/README.md b/maplestation_modules/story_content/__common_story/README.md new file mode 100644 index 000000000000..a5018de77d04 --- /dev/null +++ b/maplestation_modules/story_content/__common_story/README.md @@ -0,0 +1 @@ +A common folder for story-related code and icons, for things to share or things that can't be easily split off into their own folders. diff --git a/maplestation_modules/story_content/__common_story/code/rapid_statuses/lunar_judge.dm b/maplestation_modules/story_content/__common_story/code/rapid_statuses/lunar_judge.dm new file mode 100644 index 000000000000..740766086aa8 --- /dev/null +++ b/maplestation_modules/story_content/__common_story/code/rapid_statuses/lunar_judge.dm @@ -0,0 +1,56 @@ +/datum/story_rapid_status/lunar_judge + name = "Lunar Judge" + +/datum/story_rapid_status/lunar_judge/apply(mob/living/carbon/human/selected) + var/list/datum/action/cooldown/spell/spells_to_grant = list( + /datum/action/cooldown/spell/jaunt/ethereal_jaunt/lunar, + /datum/action/cooldown/spell/summonitem, + ) + + grant_spell_list(selected, spells_to_grant, TRUE) + + var/obj/item/toy/the_moon_itself/new_moon = new(selected) + selected.equip_conspicuous_item(new_moon) + + return TRUE + +/datum/action/cooldown/spell/jaunt/ethereal_jaunt/lunar + name = "Judge's Jaunt" + + background_icon_state = "bg_hive" + overlay_icon_state = "bg_demon_border" + cooldown_time = 12 SECONDS + cooldown_reduction_per_rank = 0 SECONDS + sound = 'sound/magic/cosmic_energy.ogg' + exit_jaunt_sound = 'sound/magic/cosmic_energy.ogg' + +/obj/item/toy/the_moon_itself + name = "The Moon" + desc = "Where did you even get this? I swear there's lunar colonies, are those people shrunk or dead?" + icon = 'maplestation_modules/story_content/__common_story/icons/literally_just_the_moon.dmi' + icon_state = "moon" + inhand_icon_state = "minimeteor" + w_class = WEIGHT_CLASS_SMALL + + force = 20 + throwforce = 99 + max_integrity = 500000 + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF + armor_type = /datum/armor/the_moon_itself + +/datum/armor/the_moon_itself + melee = 65 + bullet = 70 + laser = 90 // highly reflective + energy = 80 + consume = 100 + bomb = 95 + fire = 100 + acid = 90 + +/obj/item/toy/the_moon_itself/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + playsound(src, 'sound/effects/meteorimpact.ogg', 40, TRUE) + for(var/mob/M in urange(10, src)) + if(!M.stat && !isAI(M)) + shake_camera(M, 3, 1) diff --git a/maplestation_modules/story_content/__common_story/code/rapid_statuses/rabid_shadowfiend.dm b/maplestation_modules/story_content/__common_story/code/rapid_statuses/rabid_shadowfiend.dm new file mode 100644 index 000000000000..e0e931ebe67b --- /dev/null +++ b/maplestation_modules/story_content/__common_story/code/rapid_statuses/rabid_shadowfiend.dm @@ -0,0 +1,40 @@ +/datum/story_rapid_status/rabid_shadowfiend + name = "Rabid Shadowfiend" + + var/list/datum/action/cooldown/spell/spells_to_grant = list( + /datum/action/cooldown/spell/jaunt/shadow_walk, + /datum/action/cooldown/spell/aoe/flicker_lights, + /datum/action/cooldown/spell/conjure_item/ice_knife/shadow_knife, + ) + +/datum/story_rapid_status/rabid_shadowfiend/apply(mob/living/carbon/human/selected) + grant_spell_list(selected, spells_to_grant, TRUE) + + clawify(selected, BODY_ZONE_L_ARM, 10, 15, 20) + clawify(selected, BODY_ZONE_R_ARM, 10, 15, 20) + + return TRUE + +/datum/story_rapid_status/rabid_shadowfiend/proc/clawify(mob/living/carbon/human/selected, bodyzone, damage_low, damage_high, effectiveness) + var/obj/item/bodypart/arm/selected_arm = selected.get_bodypart(bodyzone) // your fists are now claws + selected_arm.unarmed_attack_verbs = list("slash") + selected_arm.grappled_attack_verb = "lacerate" + selected_arm.unarmed_attack_effect = ATTACK_EFFECT_CLAW + selected_arm.unarmed_attack_sound = 'sound/weapons/slash.ogg' + selected_arm.unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + selected_arm.unarmed_damage_low = damage_low + selected_arm.unarmed_damage_high = damage_high + selected_arm.unarmed_effectiveness = effectiveness + selected_arm.appendage_noun = "clawed hand" + + +/datum/story_rapid_status/rabid_shadowfiend/strong + name = "Rabid Shadowfiend (Strong)" + + spells_to_grant = list( + /datum/action/cooldown/spell/jaunt/shadow_walk, + /datum/action/cooldown/spell/aoe/flicker_lights, + /datum/action/cooldown/spell/conjure_item/ice_knife/shadow_knife, + /datum/action/cooldown/spell/pointed/projectile/furious_steel/shadow_steel, + ) + diff --git a/maplestation_modules/story_content/__common_story/code/smites/death_from_beyond.dm b/maplestation_modules/story_content/__common_story/code/smites/death_from_beyond.dm new file mode 100644 index 000000000000..358841598f66 --- /dev/null +++ b/maplestation_modules/story_content/__common_story/code/smites/death_from_beyond.dm @@ -0,0 +1,58 @@ +/// Slashes up the target like bloodless, but SLOWLY +/datum/smite/death_from_beyond + name = "Death from Beyond" + var/strength + var/how_many = 1 + +/datum/smite/death_from_beyond/configure(client/user) + var/static/list/knowledge_forbidenness = list("Low", "Moderate", "High", "DEATH") + strength = input(user, "How much do you hate this person?") in knowledge_forbidenness + +/datum/smite/death_from_beyond/effect(client/user, mob/living/target) + . = ..() + if(!iscarbon(target)) + to_chat(user, span_warning("This must be used on a carbon mob."), confidential = TRUE) + return + var/mob/living/carbon/carbon_target = target + + switch(strength) + if("Low") + how_many = 3 + if("Moderate") + how_many = 4 + if("High") + how_many = 5 + if("DEATH") + how_many = 10 + + to_chat(target, span_boldwarning("Cuts rapidly appear all over you as entities from beyond start attacking you!")) + + ultra_murder(carbon_target) + +/datum/smite/death_from_beyond/proc/ultra_murder(mob/living/carbon/carbon_target) + var/picked_severity + switch(strength) + if("Low") + picked_severity = pick_weight(list( + WOUND_SEVERITY_MODERATE = 2, + WOUND_SEVERITY_SEVERE = 1, + )) + if("Moderate") + picked_severity = pick_weight(list( + WOUND_SEVERITY_MODERATE = 1, + WOUND_SEVERITY_SEVERE = 2, + WOUND_SEVERITY_CRITICAL = 1, + )) + if("High") + picked_severity = pick_weight(list( + WOUND_SEVERITY_MODERATE = 1, + WOUND_SEVERITY_SEVERE = 1, + WOUND_SEVERITY_CRITICAL = 3, + )) + if("DEATH") + picked_severity = WOUND_SEVERITY_CRITICAL + + carbon_target.cause_wound_of_type_and_severity(WOUND_SLASH, null, picked_severity) + how_many-- + if(how_many > 0) + addtimer(CALLBACK(src, PROC_REF(ultra_murder), carbon_target), rand(0.5 SECONDS, 1 SECONDS), TIMER_DELETE_ME) diff --git a/maplestation_modules/story_content/__common_story/code/spells/shadow_knife.dm b/maplestation_modules/story_content/__common_story/code/spells/shadow_knife.dm new file mode 100644 index 000000000000..d06617b10cc6 --- /dev/null +++ b/maplestation_modules/story_content/__common_story/code/spells/shadow_knife.dm @@ -0,0 +1,26 @@ +/datum/action/cooldown/spell/conjure_item/ice_knife/shadow_knife + name = "Shadow Knife" + desc = "Summon a temporary knife from pure shadow." + background_icon_state = "bg_cult" + overlay_icon_state = "bg_cult_border" + mana_cost = 0 + item_type = /obj/item/knife/combat/ice/shadow + + cooldown_time = 90 SECONDS + invocation = "Tai'loda." + +/obj/item/knife/combat/ice/shadow + name = "shadow knife" + color = "#000000" + desc = "A knife made of concentrated shadow. It won't exist forever. Nothing does." + force = 15 + throwforce = 15 + +/obj/item/knife/combat/ice/shadow/Initialize(mapload) + . = ..() + expire_time = world.time + 40 SECONDS + RegisterSignal(src, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + +// Expires on drop unlike the regular knife. +/obj/item/knife/combat/ice/shadow/proc/on_drop(atom/source) + expire() diff --git a/maplestation_modules/story_content/__common_story/code/spells/shadow_steel.dm b/maplestation_modules/story_content/__common_story/code/spells/shadow_steel.dm new file mode 100644 index 000000000000..fa0b58b8814c --- /dev/null +++ b/maplestation_modules/story_content/__common_story/code/spells/shadow_steel.dm @@ -0,0 +1,75 @@ +/datum/action/cooldown/spell/pointed/projectile/furious_steel/shadow_steel + name = "Shadow Steel" + desc = "Summon two shadow blades which orbit you. \ + While orbiting you, these blades will protect you from from attacks, but will be consumed on use. \ + Additionally, you can click to fire the blades at a target, dealing damage and causing bleeding." + background_icon_state = "bg_cult" + overlay_icon_state = "bg_cult_border" + + invocation = span_notice("%CASTER holds out their arm forwards, commanding a blade to fire.") + invocation_self_message = span_notice("You hold your arm forward.") + invocation_type = INVOCATION_EMOTE + + active_msg = "You summon forth two blades from darkness." + deactive_msg = "You conceal your black blades." + cast_range = 20 + projectile_type = /obj/projectile/shadow_steel + projectile_amount = 2 + + time_between_blades = 1 SECONDS + + applied_status = /datum/status_effect/protective_blades/shadow + +/obj/projectile/shadow_steel + name = "blade" + icon = 'icons/obj/service/kitchen.dmi' + icon_state = "knife" + speed = 2 + damage = 15 + sharpness = SHARP_EDGED + wound_bonus = 20 + pass_flags = PASSTABLE | PASSFLAPS + +/obj/projectile/shadow_steel/Initialize(mapload) + . = ..() + add_filter("knife_color", 1, list("type" = "color", "color" = "#000000")) + add_filter("knife", 2, list("type" = "outline", "color" = "#640000", "size" = 1)) + +/obj/projectile/shadow_steel/prehit_pierce(atom/hit) + if(isliving(hit) && isliving(firer)) + var/mob/living/caster = firer + var/mob/living/victim = hit + if(caster == victim) + return PROJECTILE_PIERCE_PHASE + + if(caster.mind) // probably not going to be used in this one but whatever + var/datum/antagonist/heretic_monster/monster = victim.mind?.has_antag_datum(/datum/antagonist/heretic_monster) + if(monster?.master == caster.mind) + return PROJECTILE_PIERCE_PHASE + + if(victim.can_block_magic(MAGIC_RESISTANCE)) + visible_message(span_warning("[src] drops to the ground and dissolves on contact [victim]!")) + return PROJECTILE_DELETE_WITHOUT_HITTING + + return ..() + +/datum/status_effect/protective_blades/shadow + +/// overriden to make it use shadow blades +/datum/status_effect/protective_blades/shadow/create_blade() + if(QDELETED(src) || QDELETED(owner)) + return + + var/obj/effect/floating_blade/shadow/blade = new(get_turf(owner)) + blades += blade + blade.orbit(owner, blade_orbit_radius) + RegisterSignal(blade, COMSIG_QDELETING, PROC_REF(remove_blade)) + playsound(get_turf(owner), 'sound/items/unsheath.ogg', 33, TRUE) + +/obj/effect/floating_blade/shadow + name = "shadow knife" + glow_color = "#640000" + +/obj/effect/floating_blade/shadow/Initialize(mapload) + . = ..() + add_filter("knife_color", 1, list("type" = "color", "color" = "#000000")) diff --git a/maplestation_modules/story_content/__common_story/code/story_lazy_template.dm b/maplestation_modules/story_content/__common_story/code/story_lazy_template.dm new file mode 100644 index 000000000000..fa51f3026bab --- /dev/null +++ b/maplestation_modules/story_content/__common_story/code/story_lazy_template.dm @@ -0,0 +1,45 @@ +/datum/lazy_template/story + map_dir = "maplestation_modules/story_content/_maps/templates/lazy_templates" + // The name of the map that's shown to the user + var/shown_map_name + +// version of the lazy template loader with story maps instead +ADMIN_VERB(load_story_lazy_template, R_ADMIN, "Load/Jump Story Lazy Template", "Loads a lazy template and/or jumps to it.", ADMIN_CATEGORY_EVENTS) + var/list/choices = new() + for(var/datum/lazy_template/story/template as anything in subtypesof(/datum/lazy_template/story)) + choices += template.shown_map_name + choices[template.shown_map_name] += template.key + + var/choice = tgui_input_list(user, "Key?", "Lazy Loader", choices) + if(!choice) + return + + choice = choices[choice] + if(!choice) + to_chat(user, span_warning("No template with that key found, report this!")) + return + + var/already_loaded = LAZYACCESS(SSmapping.loaded_lazy_templates, choice) + var/force_load = FALSE + if(already_loaded && (tgui_alert(user, "Template already loaded.", "", list("Jump", "Load Again")) == "Load Again")) + force_load = TRUE + + var/datum/turf_reservation/reservation = SSmapping.lazy_load_template(choice, force = force_load) + if(!reservation) + to_chat(user, span_boldwarning("Failed to load template!")) + return + + message_admins("[key_name_admin(user)] has loaded lazy template '[choice]'") + if(!already_loaded || force_load) + if(tgui_alert(user, "Do you want to observe the newly loaded lazy template? (Will admin ghost if not already an observer.)", "Check Loaded Template?", list("Yes", "No")) == "Yes") + if(!isobserver(user.mob)) + SSadmin_verbs.dynamic_invoke_verb(user, /datum/admin_verb/admin_ghost) + user.mob.forceMove(reservation.bottom_left_turfs[1]) + to_chat(user, span_boldnicegreen("Template loaded, you have been moved to the bottom left of the reservation.")) + else + to_chat(user, span_boldnicegreen("Template loaded.")) + else // repeat of the admin_ghost/forcemove code, not many cleaner ways of doing this + if(!isobserver(user.mob)) + SSadmin_verbs.dynamic_invoke_verb(user, /datum/admin_verb/admin_ghost) + user.mob.forceMove(reservation.bottom_left_turfs[1]) + to_chat(user, span_boldnicegreen("Template loaded, you have been moved to the bottom left of the reservation.")) diff --git a/maplestation_modules/story_content/__common_story/code/story_rapid_status.dm b/maplestation_modules/story_content/__common_story/code/story_rapid_status.dm new file mode 100644 index 000000000000..427175ef7833 --- /dev/null +++ b/maplestation_modules/story_content/__common_story/code/story_rapid_status.dm @@ -0,0 +1,33 @@ +//Rapid status, a way to make a lot of changes to a mob quickly, albeit preset. Hopefully eventually replaced with JSON. Pretty much taken from the "make me tanky" menu +#define VV_STORY_RAPID_STATUS "story_rapid_status" + +/mob/living/carbon/human/vv_get_dropdown() + . = ..() + VV_DROPDOWN_OPTION(VV_STORY_RAPID_STATUS, "Story Rapid Status") + +/mob/living/carbon/human/vv_do_topic(list/href_list) + . = ..() + + if(href_list[VV_STORY_RAPID_STATUS]) + if(!check_rights(R_SPAWN)) + return + + var/list/options = new() + + for(var/datum/story_rapid_status/status as anything in subtypesof(/datum/story_rapid_status)) + if(status.selectable) + options += status.name + options[status.name] += status + + var/result = tgui_input_list(usr, "Pick something. You can also cancel with \"Cancel\".", "Rapid Status", options + "Cancel") + if(QDELETED(src) || !result || result == "Cancel") + return + var/datum/story_rapid_status/picked = options[result] + picked = new picked() + + if(!picked) + return + message_admins("[key_name(usr)] has rapidly given [key_name(src)] the following preset: [result]") + log_admin("[key_name(usr)] has rapidly given [key_name(src)] the following preset: [result]") + + picked.apply(selected = src) diff --git a/maplestation_modules/story_content/__common_story/code/story_rapid_status_datum.dm b/maplestation_modules/story_content/__common_story/code/story_rapid_status_datum.dm new file mode 100644 index 000000000000..d9cbafbcc11d --- /dev/null +++ b/maplestation_modules/story_content/__common_story/code/story_rapid_status_datum.dm @@ -0,0 +1,19 @@ +/datum/story_rapid_status + var/name = "If you see this, something broke" + /// If FALSE, doesn't appear in the story rapid status menu + var/selectable = TRUE + +// Override with what you want to happen. +/datum/story_rapid_status/proc/apply(mob/living/carbon/human/selected) + return FALSE + +/datum/story_rapid_status/proc/grant_spell_list(mob/living/carbon/human/selected, list/list_of_spells, robeless) + for(var/spell_type as anything in list_of_spells) + if(!ispath(spell_type, /datum/action/cooldown/spell)) + CRASH("Non-spell [spell_type] given to story_rapid_status/grant_spell_list") + var/datum/action/cooldown/spell/new_spell = new spell_type(selected.mind || selected) + if(robeless) + new_spell.spell_requirements &= ~SPELL_REQUIRES_WIZARD_GARB + new_spell.Grant(selected) + + return TRUE diff --git a/maplestation_modules/story_content/__common_story/icons/literally_just_the_moon.dmi b/maplestation_modules/story_content/__common_story/icons/literally_just_the_moon.dmi new file mode 100644 index 000000000000..8921b0de2ab4 Binary files /dev/null and b/maplestation_modules/story_content/__common_story/icons/literally_just_the_moon.dmi differ diff --git a/maplestation_modules/story_content/__crit_equipment/code/areas.dm b/maplestation_modules/story_content/__crit_equipment/code/areas.dm new file mode 100644 index 000000000000..911d7a82a96c --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/areas.dm @@ -0,0 +1,25 @@ +/area/grand_library + name = "Grand Library" + icon = 'maplestation_modules/story_content/__crit_equipment/icons/areas_library.dmi' + icon_state = "grand_library" + static_lighting = TRUE + requires_power = FALSE + has_gravity = STANDARD_GRAVITY + area_flags = UNIQUE_AREA | NOTELEPORT + flags_1 = NONE + +/area/grand_library/confidential_dept + name = "Department of Confidential Works" + icon_state = "conf_dept" + +/area/grand_library/confidential_dept/reception + name = "Confidential Works Reception" + icon_state = "conf_reception" + +/area/grand_library/confidential_dept/librarian + name = "Confidential Works Librarian's Room" + icon_state = "conf_librarian" + +/area/grand_library/confidential_dept/observation + name = "Confidential Works Observation Deck" + icon_state = "conf_observation" diff --git a/maplestation_modules/story_content/__crit_equipment/code/heat_blade.dm b/maplestation_modules/story_content/__crit_equipment/code/heat_blade.dm new file mode 100644 index 000000000000..281328967e05 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/heat_blade.dm @@ -0,0 +1,26 @@ +/obj/item/melee/heat_blade_unit + name = "heat blade" + desc = "A blade unit able to take in heating blade elements in order to augment it's strikes with high temperatures. \ + Rapidly chews through blades." + icon = 'icons/obj/weapons/sword.dmi' + icon_state = "sabre" + inhand_icon_state = "sabre" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + obj_flags = CONDUCTS_ELECTRICITY + force = 10 + throwforce = 10 + demolition_mod = 0.75 + w_class = WEIGHT_CLASS_SMALL + attack_verb_continuous = list("slashes", "cuts") + attack_verb_simple = list("slash", "cut") + block_sound = 'sound/weapons/parry.ogg' + hitsound = 'sound/weapons/rapierhit.ogg' + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) + drop_sound = 'maplestation_modules/sound/items/drop/sword.ogg' + pickup_sound = 'maplestation_modules/sound/items/pickup/sword2.ogg' + equip_sound = 'maplestation_modules/sound/items/drop/sword.ogg' + +/obj/item/heat_blade + name = "heat blade" + desc = "A plastitanium blade for a heat blade unit to take in. Might be somewhat usable by itself in a pinch." diff --git a/maplestation_modules/story_content/__crit_equipment/code/library/invitation.dm b/maplestation_modules/story_content/__crit_equipment/code/library/invitation.dm new file mode 100644 index 000000000000..51d6481b70eb --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/library/invitation.dm @@ -0,0 +1,45 @@ +/obj/item/grand_library_invitation + name = "\improper Grand Library Invitation" + desc = "If you see this, somebody messed up and didn't use the proper subtype." + icon = 'maplestation_modules/story_content/__crit_equipment/icons/library_card.dmi' + icon_state = "invitation_conf" + w_class = WEIGHT_CLASS_SMALL + var/area_to_send_to = /area/station/commons/toilet/restrooms + +/obj/item/grand_library_invitation/attack_self(mob/user, modifiers) + if(user.stat != CONSCIOUS) + return + + if(!length(get_areas(areatype = area_to_send_to, subtypes = FALSE))) // check if our target area does not exist + to_chat(user, span_warning("The card is dim. It does not seem possible to use it at this moment.")) + return + + if(tgui_alert(user, "Are you sure you want to head into the Grand Library?", "Library Invitation", list("Yes", "No")) != "Yes") + return + + teleport_to_library(user) + +/obj/item/grand_library_invitation/examine(mob/user) + . = ..() + . += span_notice("Use in hand to teleport to the Grand Library.") + +/obj/item/grand_library_invitation/proc/teleport_to_library(mob/user) + var/list/valid_turfs = list() + for(var/turf/possible_destination as anything in get_area_turfs(area_to_send_to)) + if(isspaceturf(possible_destination)) + continue + if(possible_destination.density) + continue + if(possible_destination.is_blocked_turf(exclude_mobs = TRUE)) + continue + + valid_turfs += possible_destination + + do_teleport(user, pick(valid_turfs), asoundout = 'sound/magic/teleport_app.ogg', channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE) + + qdel(src) + +/obj/item/grand_library_invitation/confidential_works + desc = "A black, gray and white card with a book on it." + icon_state = "invitation_conf" + area_to_send_to = /area/grand_library/confidential_dept/reception diff --git a/maplestation_modules/story_content/__crit_equipment/code/library/lazy_templates.dm b/maplestation_modules/story_content/__crit_equipment/code/library/lazy_templates.dm new file mode 100644 index 000000000000..ae1c64fad042 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/library/lazy_templates.dm @@ -0,0 +1,6 @@ +#define STORY_LAZY_TEMPLATE_KEY_CONFIDENTIAL_WORKS "LT_CONFIDENTIALWORKS" + +/datum/lazy_template/story/confidential_works + key = STORY_LAZY_TEMPLATE_KEY_CONFIDENTIAL_WORKS + map_name = "library_confidential_works" + shown_map_name = "Department of Confidential Works" diff --git a/maplestation_modules/story_content/__crit_equipment/code/library/weapons.dm b/maplestation_modules/story_content/__crit_equipment/code/library/weapons.dm new file mode 100644 index 000000000000..fe4e2408c6bf --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/library/weapons.dm @@ -0,0 +1,18 @@ +/obj/item/melee/kanabo + name = "kanabō" + desc = "A spiked club associated with Oni. It's incredibly heavy." + icon = 'maplestation_modules/story_content/__crit_equipment/icons/kanabo.dmi' + icon_state = "kanabo" + inhand_icon_state = "kanabo" + lefthand_file = 'maplestation_modules/story_content/__crit_equipment/icons/kanabo_lefthand.dmi' + righthand_file = 'maplestation_modules/story_content/__crit_equipment/icons/kanabo_righthand.dmi' + force = 35 + wound_bonus = 15 + throwforce = 25 + demolition_mod = 1.25 // VERY destructive! + attack_verb_continuous = list("beats", "smacks") + attack_verb_simple = list("beat", "smack") + custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT) + w_class = WEIGHT_CLASS_BULKY + drop_sound = 'maplestation_modules/sound/items/drop/wooden.ogg' + pickup_sound = 'maplestation_modules/sound/items/pickup/wooden.ogg' diff --git a/maplestation_modules/story_content/__crit_equipment/code/pendant.dm b/maplestation_modules/story_content/__crit_equipment/code/pendant.dm new file mode 100644 index 000000000000..563571d11709 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/pendant.dm @@ -0,0 +1,19 @@ +/obj/item/clothing/neck/annatto_pendant + name = "orange-blue pendant" + desc = "A orange and blue swirl pendant with a purple chain made of obsidian-like material. It seems like it can open." + icon = 'maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet.dmi' + icon_state = "greenleaf_amulet" + worn_icon = 'maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet_worn.dmi' + worn_icon_state = "greenleaf_amulet" + w_class = WEIGHT_CLASS_SMALL + resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF | INDESTRUCTIBLE // thing is built TOUGH + var/pendant_open = FALSE + +/obj/item/clothing/neck/annatto_pendant/attack_self(mob/user) + if(!pendant_open) + pendant_open = TRUE + message_admins("[user] has opened the [src]. [ADMIN_FLW(src)]") // spoiler protection + icon_state = "greenleaf_amulet-open" + else + pendant_open = FALSE + icon_state = "greenleaf_amulet" diff --git a/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/_cosmos.dm b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/_cosmos.dm new file mode 100644 index 000000000000..3090a4ad2335 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/_cosmos.dm @@ -0,0 +1,14 @@ +/datum/story_rapid_status/cosmos + selectable = FALSE + +/datum/story_rapid_status/cosmos/proc/clawify(mob/living/carbon/human/selected, bodyzone, damage_low, damage_high, effectiveness) + var/obj/item/bodypart/arm/selected_arm = selected.get_bodypart(bodyzone) // your fists are now claws + selected_arm.unarmed_attack_verbs = list("slash") + selected_arm.grappled_attack_verb = "lacerate" + selected_arm.unarmed_attack_effect = ATTACK_EFFECT_CLAW + selected_arm.unarmed_attack_sound = 'sound/weapons/slash.ogg' + selected_arm.unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + selected_arm.unarmed_damage_low = damage_low + selected_arm.unarmed_damage_high = damage_high + selected_arm.unarmed_effectiveness = effectiveness + selected_arm.appendage_noun = "clawed hand" diff --git a/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/herald_of_cosmos.dm b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/herald_of_cosmos.dm new file mode 100644 index 000000000000..2a0cca9468c8 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/herald_of_cosmos.dm @@ -0,0 +1,66 @@ +/datum/story_rapid_status/cosmos/herald_of_cosmos + name = "Herald of Cosmos" + selectable = TRUE + +/datum/story_rapid_status/cosmos/herald_of_cosmos/apply(mob/living/carbon/human/selected) + selected?.mind.add_antag_datum(/datum/antagonist/heretic) + var/datum/antagonist/heretic/our_heretic = selected?.mind.has_antag_datum(/datum/antagonist/heretic) + var/list/knowledges_to_grant = list( // cosmic heretic with a sidepath, some void spells and no ascension + /datum/heretic_knowledge/limited_amount/starting/base_cosmic, + /datum/heretic_knowledge/cosmic_grasp, + /datum/heretic_knowledge/spell/cosmic_runes, + /datum/heretic_knowledge/mark/cosmic_mark, + /datum/heretic_knowledge/spell/star_touch, + /datum/heretic_knowledge/spell/star_blast, + /datum/heretic_knowledge/blade_upgrade/cosmic, + /datum/heretic_knowledge/spell/cosmic_expansion, + /datum/heretic_knowledge/cold_snap, + /datum/heretic_knowledge/spell/void_phase, + /datum/heretic_knowledge/spell/void_pull, + /datum/heretic_knowledge/spell/space_phase, + ) + if(our_heretic) // in case this entire chain broke along the way + our_heretic.ascended = TRUE + for(var/i in knowledges_to_grant) + our_heretic.gain_knowledge(i) + + // the cosmic heretic ascension upgrades + var/datum/heretic_knowledge/blade_upgrade/cosmic/blade_upgrade = our_heretic.get_knowledge(/datum/heretic_knowledge/blade_upgrade/cosmic) + blade_upgrade.combo_duration = 10 SECONDS + blade_upgrade.combo_duration_amount = 10 SECONDS + blade_upgrade.max_combo_duration = 30 SECONDS + blade_upgrade.increase_amount = 2 SECONDS + + var/datum/action/cooldown/spell/touch/star_touch/star_touch_spell = locate() in selected.actions + if(star_touch_spell) + star_touch_spell.ascended = TRUE + + var/datum/action/cooldown/spell/conjure/cosmic_expansion/cosmic_expansion_spell = locate() in selected.actions + cosmic_expansion_spell?.ascended = TRUE + + selected.physiology.brute_mod = 0.25 + selected.physiology.burn_mod = 0.25 + selected.physiology.tox_mod = 0.5 + selected.physiology.oxy_mod = 0.5 + selected.physiology.stamina_mod = 0.5 + selected.physiology.stun_mod = 0.5 + selected.physiology.bleed_mod = 0 + selected.set_pain_mod("badmin", 0.6) + selected.add_consciousness_modifier("badmin", 30) + + clawify(selected, BODY_ZONE_L_ARM, 25, 25, 30) + clawify(selected, BODY_ZONE_R_ARM, 25, 25, 30) + + var/obj/item/bodypart/leg/left_leg = selected.get_bodypart(BODY_ZONE_L_LEG) // weaker, but allows proper damage after downing somebody + left_leg.unarmed_damage_low = 18 + left_leg.unarmed_damage_high = 18 + left_leg.unarmed_effectiveness = 20 + + var/obj/item/bodypart/leg/right_leg = selected.get_bodypart(BODY_ZONE_R_LEG) + right_leg.unarmed_damage_low = 18 + right_leg.unarmed_damage_high = 18 + right_leg.unarmed_effectiveness = 20 + + ADD_TRAIT(selected, TRAIT_SLEEPIMMUNE, REF(selected)) //needed to prevent chem cheese using wellcheers and sulfonal + + return TRUE diff --git a/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/prince_of_cosmos.dm b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/prince_of_cosmos.dm new file mode 100644 index 000000000000..522e43f1d0d1 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/prince_of_cosmos.dm @@ -0,0 +1,17 @@ +/datum/story_rapid_status/cosmos/prince_of_cosmos + name = "Prince of Cosmos" + selectable = TRUE + +/datum/story_rapid_status/cosmos/prince_of_cosmos/apply(mob/living/carbon/human/selected) + var/list/datum/action/cooldown/spell/spells_to_grant = list( + /datum/action/cooldown/spell/jaunt/shadow_walk, + /datum/action/cooldown/spell/pointed/projectile/star_blast, + /datum/action/cooldown/spell/touch/star_touch, + /datum/action/cooldown/spell/shadow_cloak, + ) + + grant_spell_list(selected, spells_to_grant, TRUE) + + clawify(selected, BODY_ZONE_L_ARM, 10, 15, 20) + + return TRUE diff --git a/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/princess_of_cosmos.dm b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/princess_of_cosmos.dm new file mode 100644 index 000000000000..6f1acfd8cb30 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/princess_of_cosmos.dm @@ -0,0 +1,15 @@ +/datum/story_rapid_status/cosmos/princess_of_cosmos + name = "Princess of Cosmos" + selectable = TRUE + +/datum/story_rapid_status/cosmos/princess_of_cosmos/apply(mob/living/carbon/human/selected) + var/list/datum/action/cooldown/spell/spells_to_grant = list( + /datum/action/cooldown/spell/pointed/projectile/star_blast, + /datum/action/cooldown/spell/touch/star_touch, + ) + + grant_spell_list(selected, spells_to_grant, TRUE) + + clawify(selected, BODY_ZONE_R_ARM, 10, 15, 20) + + return TRUE diff --git a/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/silvered_huntress.dm b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/silvered_huntress.dm new file mode 100644 index 000000000000..8f54bb5315c4 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/silvered_huntress.dm @@ -0,0 +1,37 @@ +/datum/story_rapid_status/silvered_huntress + name = "The Silvered Huntress" + selectable = TRUE + + +/datum/story_rapid_status/silvered_huntress/apply(mob/living/carbon/human/selected) + var/list/datum/action/cooldown/spell/spells_to_grant = list( + /datum/action/cooldown/spell/smoke/tevetia, + ) + + grant_spell_list(selected, spells_to_grant, TRUE) + + selected.physiology.brute_mod = 0.4 + selected.physiology.burn_mod = 0.4 + selected.physiology.tox_mod = 0.5 + selected.physiology.oxy_mod = 0.5 + selected.physiology.stamina_mod = 0.5 + selected.physiology.stun_mod = 0.5 + selected.physiology.bleed_mod = 0.2 + selected.set_pain_mod("badmin", 0.6) + selected.add_consciousness_modifier("badmin", 30) + + strengthen(selected, BODY_ZONE_L_ARM) + strengthen(selected, BODY_ZONE_R_ARM) + strengthen(selected, BODY_ZONE_L_LEG) + strengthen(selected, BODY_ZONE_R_LEG) + + ADD_TRAIT(selected, TRAIT_SLEEPIMMUNE, REF(selected)) //needed to prevent chem cheese using wellcheers and sulfonal + + return TRUE + +//pending unique martial arts +/datum/story_rapid_status/silvered_huntress/proc/strengthen(mob/living/carbon/human/selected, bodyzone) + var/obj/item/bodypart/selected_bodypart = selected.get_bodypart(bodyzone) + selected_bodypart.unarmed_damage_low = 25 + selected_bodypart.unarmed_damage_high = 25 + selected_bodypart.unarmed_effectiveness = 30 diff --git a/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_smoke.dm b/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_smoke.dm new file mode 100644 index 000000000000..1964c8a98708 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_smoke.dm @@ -0,0 +1,32 @@ +/datum/action/cooldown/spell/smoke/tevetia + name = "Hunter's Smoke" + desc = "This spell spawns a cloud of black smoke at your location. \ + It will also give thermal vision, allowing you to see who is inside." + + cooldown_time = 25 SECONDS + + smoke_type = /datum/effect_system/fluid_spread/smoke/tevetia + smoke_amt = 5 + +/datum/effect_system/fluid_spread/smoke/tevetia + effect_type = /obj/effect/particle_effect/fluid/smoke/tevetia + +/obj/effect/particle_effect/fluid/smoke/tevetia + name = "black smoke" + color = "#1b1b1b" + lifetime = 16 SECONDS + +/datum/action/cooldown/spell/smoke/tevetia/Remove(mob/living/remove_from) + REMOVE_TRAIT(remove_from, TRAIT_THERMAL_VISION, MAGIC_TRAIT) + remove_from.update_sight() + return ..() + +/datum/action/cooldown/spell/smoke/tevetia/cast(mob/cast_on) + . = ..() + ADD_TRAIT(cast_on, TRAIT_THERMAL_VISION, MAGIC_TRAIT) + cast_on.update_sight() + addtimer(CALLBACK(src, PROC_REF(deactivate), cast_on), 17 SECONDS) //+1 second in order to account for smoke easing out + +/datum/action/cooldown/spell/smoke/tevetia/proc/deactivate(mob/cast_on) + REMOVE_TRAIT(cast_on, TRAIT_THERMAL_VISION, MAGIC_TRAIT) + cast_on.update_sight() diff --git a/maplestation_modules/story_content/__crit_equipment/icons/areas_library.dmi b/maplestation_modules/story_content/__crit_equipment/icons/areas_library.dmi new file mode 100644 index 000000000000..fef97e72dad5 Binary files /dev/null and b/maplestation_modules/story_content/__crit_equipment/icons/areas_library.dmi differ diff --git a/maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet.dmi b/maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet.dmi new file mode 100644 index 000000000000..f35d039192b4 Binary files /dev/null and b/maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet.dmi differ diff --git a/maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet_worn.dmi b/maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet_worn.dmi new file mode 100644 index 000000000000..83a6a052fc74 Binary files /dev/null and b/maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet_worn.dmi differ diff --git a/maplestation_modules/story_content/__crit_equipment/icons/kanabo.dmi b/maplestation_modules/story_content/__crit_equipment/icons/kanabo.dmi new file mode 100644 index 000000000000..228bf4b7b3ec Binary files /dev/null and b/maplestation_modules/story_content/__crit_equipment/icons/kanabo.dmi differ diff --git a/maplestation_modules/story_content/__crit_equipment/icons/kanabo_lefthand.dmi b/maplestation_modules/story_content/__crit_equipment/icons/kanabo_lefthand.dmi new file mode 100644 index 000000000000..66ad7ef8f3cb Binary files /dev/null and b/maplestation_modules/story_content/__crit_equipment/icons/kanabo_lefthand.dmi differ diff --git a/maplestation_modules/story_content/__crit_equipment/icons/kanabo_righthand.dmi b/maplestation_modules/story_content/__crit_equipment/icons/kanabo_righthand.dmi new file mode 100644 index 000000000000..48fb1b6bd11d Binary files /dev/null and b/maplestation_modules/story_content/__crit_equipment/icons/kanabo_righthand.dmi differ diff --git a/maplestation_modules/story_content/__crit_equipment/icons/library_card.dmi b/maplestation_modules/story_content/__crit_equipment/icons/library_card.dmi new file mode 100644 index 000000000000..469142cfd9b4 Binary files /dev/null and b/maplestation_modules/story_content/__crit_equipment/icons/library_card.dmi differ diff --git a/maplestation_modules/story_content/_maps/templates/lazy_templates/library_confidential_works.dmm b/maplestation_modules/story_content/_maps/templates/lazy_templates/library_confidential_works.dmm new file mode 100644 index 000000000000..028c38e22f30 --- /dev/null +++ b/maplestation_modules/story_content/_maps/templates/lazy_templates/library_confidential_works.dmm @@ -0,0 +1,879 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ai" = ( +/obj/structure/closet, +/obj/item/melee/maple_plasma_blade, +/obj/item/knife/combat/survival, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"ax" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"aD" = ( +/obj/structure/filingcabinet, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"dc" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"dg" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"dC" = ( +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"dS" = ( +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/observation) +"em" = ( +/obj/structure/table/wood, +/obj/machinery/coffeemaker/impressa, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"eN" = ( +/obj/structure/table/wood, +/obj/item/storage/box/coffeepack, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"fb" = ( +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/observation) +"gM" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/observation) +"hd" = ( +/turf/closed/indestructible/syndicate, +/area/grand_library/confidential_dept/librarian) +"hf" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"jf" = ( +/turf/open/space/basic, +/area/space) +"ks" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"lw" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/filingcabinet/chestdrawer, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"mG" = ( +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"qe" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"qn" = ( +/obj/structure/closet, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"sy" = ( +/obj/structure/filingcabinet, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"tO" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/dim/directional/west, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"ui" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/dim/directional/east, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"ws" = ( +/obj/structure/chair/sofa/corp/corner{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"xF" = ( +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"xP" = ( +/obj/structure/filingcabinet, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"yy" = ( +/obj/structure/sink/directional/east{ + pixel_y = -8 + }, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"Ci" = ( +/obj/machinery/light/small/dim/directional/south, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"Co" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"Cu" = ( +/obj/machinery/door/airlock/vault, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept/librarian) +"Dc" = ( +/obj/machinery/light/dim/directional/south, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/observation) +"Dz" = ( +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"Ey" = ( +/obj/structure/filingcabinet, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/filingcabinet, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"EM" = ( +/obj/structure/table/wood, +/obj/machinery/coffeemaker/impressa, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"Fa" = ( +/obj/machinery/light/small/dim/directional/south, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"Fr" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"HO" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"IQ" = ( +/turf/closed/indestructible/opsglass, +/area/grand_library/confidential_dept/observation) +"Jk" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/light/floor, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"Ll" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"Ng" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"Or" = ( +/obj/structure/chair/sofa/corp{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"OD" = ( +/obj/structure/filingcabinet, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"Pc" = ( +/obj/structure/filingcabinet, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/dim/directional/south, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"PK" = ( +/turf/closed/indestructible/fakedoor, +/area/grand_library/confidential_dept/librarian) +"QZ" = ( +/turf/closed/indestructible/fakedoor, +/area/grand_library/confidential_dept/observation) +"Ru" = ( +/obj/structure/filingcabinet, +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"SY" = ( +/turf/closed/indestructible/syndicate, +/area/grand_library/confidential_dept/reception) +"Tb" = ( +/obj/machinery/door/airlock/vault, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept/reception) +"TD" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"Ue" = ( +/obj/structure/dresser, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"UH" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/grand_library/confidential_dept) +"Vm" = ( +/obj/structure/chair/comfy/black, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/librarian) +"WI" = ( +/obj/structure/closet, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"Xp" = ( +/turf/closed/indestructible/syndicate, +/area/grand_library/confidential_dept/observation) +"XM" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 1 + }, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"YL" = ( +/turf/closed/indestructible/syndicate, +/area/grand_library/confidential_dept) +"Zs" = ( +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) +"ZJ" = ( +/obj/machinery/light/small/dim/directional/west, +/turf/open/floor/carpet/black, +/area/grand_library/confidential_dept/reception) + +(1,1,1) = {" +YL +YL +YL +YL +YL +YL +YL +YL +YL +YL +YL +YL +hd +hd +PK +hd +hd +hd +hd +"} +(2,1,1) = {" +YL +xP +hf +tO +dc +dc +ax +dc +UH +tO +hf +Ey +hd +Ru +mG +yy +EM +Fr +hd +"} +(3,1,1) = {" +YL +xP +hf +hf +HO +UH +HO +UH +UH +hf +hf +hf +hd +sy +mG +mG +mG +Fa +hd +"} +(4,1,1) = {" +YL +xP +hf +hf +HO +HO +UH +UH +UH +hf +hf +hf +Cu +mG +mG +Co +Fr +mG +hd +"} +(5,1,1) = {" +YL +xP +hf +hf +UH +UH +UH +UH +UH +hf +hf +hf +hd +mG +Vm +Fr +Dz +Fa +hd +"} +(6,1,1) = {" +YL +xP +hf +hf +HO +UH +HO +UH +UH +hf +hf +xP +hd +dC +Vm +dg +sy +qn +hd +"} +(7,1,1) = {" +YL +OD +hf +hf +UH +UH +UH +UH +UH +hf +hf +aD +hd +hd +hd +hd +hd +hd +hd +"} +(8,1,1) = {" +YL +xP +hf +hf +UH +HO +UH +HO +UH +hf +hf +xP +Xp +dS +dS +dS +dS +Xp +jf +"} +(9,1,1) = {" +YL +xP +hf +hf +HO +HO +Jk +lw +HO +hf +hf +xP +IQ +dS +gM +dS +dS +Xp +jf +"} +(10,1,1) = {" +YL +xP +hf +hf +UH +UH +UH +UH +UH +hf +hf +xP +IQ +dS +gM +dS +Dc +Xp +jf +"} +(11,1,1) = {" +YL +xP +hf +hf +ax +ax +ax +ax +UH +hf +hf +xP +IQ +dS +gM +dS +dS +Xp +jf +"} +(12,1,1) = {" +YL +OD +hf +hf +UH +UH +UH +UH +HO +Ng +hf +Pc +Xp +fb +dS +dS +dS +Xp +jf +"} +(13,1,1) = {" +YL +xP +hf +hf +HO +HO +Jk +HO +HO +Ng +hf +xP +IQ +dS +gM +dS +dS +QZ +jf +"} +(14,1,1) = {" +YL +xP +hf +hf +UH +UH +UH +UH +UH +hf +hf +xP +IQ +dS +gM +dS +dS +Xp +jf +"} +(15,1,1) = {" +YL +xP +hf +hf +UH +UH +UH +UH +UH +hf +hf +xP +IQ +dS +gM +dS +dS +Xp +jf +"} +(16,1,1) = {" +YL +xP +hf +hf +UH +UH +UH +HO +HO +hf +hf +xP +IQ +dS +gM +dS +dS +Xp +jf +"} +(17,1,1) = {" +YL +xP +hf +Ng +HO +HO +Jk +HO +HO +hf +hf +xP +IQ +dS +gM +dS +dS +QZ +jf +"} +(18,1,1) = {" +YL +OD +hf +hf +UH +UH +UH +UH +UH +hf +hf +Pc +Xp +fb +dS +dS +dS +Xp +jf +"} +(19,1,1) = {" +YL +xP +hf +hf +UH +UH +UH +UH +UH +hf +hf +xP +IQ +dS +gM +dS +dS +Xp +jf +"} +(20,1,1) = {" +YL +xP +hf +hf +ax +ax +ax +ax +UH +hf +hf +xP +IQ +dS +gM +dS +Dc +Xp +jf +"} +(21,1,1) = {" +YL +xP +hf +hf +UH +HO +UH +UH +UH +hf +hf +xP +IQ +dS +gM +dS +dS +Xp +jf +"} +(22,1,1) = {" +YL +xP +hf +hf +HO +HO +Jk +HO +UH +hf +hf +xP +Xp +dS +dS +dS +dS +Xp +jf +"} +(23,1,1) = {" +YL +OD +hf +hf +UH +UH +UH +UH +UH +hf +hf +aD +SY +SY +SY +SY +SY +SY +SY +"} +(24,1,1) = {" +YL +xP +hf +hf +UH +UH +UH +UH +UH +hf +hf +xP +SY +eN +em +ks +ZJ +Ue +SY +"} +(25,1,1) = {" +YL +xP +hf +hf +UH +HO +HO +HO +HO +hf +hf +hf +SY +Zs +xF +xF +xF +WI +SY +"} +(26,1,1) = {" +YL +xP +hf +hf +UH +UH +UH +HO +UH +hf +hf +hf +Tb +xF +xF +xF +xF +Ci +SY +"} +(27,1,1) = {" +YL +xP +hf +hf +UH +UH +UH +UH +UH +hf +hf +hf +SY +ai +xF +xF +xF +XM +SY +"} +(28,1,1) = {" +YL +xP +hf +ui +TD +TD +TD +TD +UH +ui +hf +xP +SY +Ll +qe +Or +Or +ws +SY +"} +(29,1,1) = {" +YL +YL +YL +YL +YL +YL +YL +YL +YL +YL +YL +YL +SY +SY +SY +SY +SY +SY +SY +"} diff --git a/maplestation_modules/story_content/armored_corps/code/mecha_weapons/gauss_override.dm b/maplestation_modules/story_content/armored_corps/code/mecha_weapons/gauss_override.dm deleted file mode 100644 index 564a724b20ce..000000000000 --- a/maplestation_modules/story_content/armored_corps/code/mecha_weapons/gauss_override.dm +++ /dev/null @@ -1,3 +0,0 @@ -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/gauss/penetrator - desc = "A weapon for combat exosuits. Uses magnetic propulsion to fire a metallic slug at extremely high velocities. \ - Upgraded version for internal Nanotrasen usage. Only available in extremely low quantities. Has a faded \"SFI\" marking." diff --git a/maplestation_modules/story_content/armored_corps/code/mecha_weapons/laser_override.dm b/maplestation_modules/story_content/armored_corps/code/mecha_weapons/laser_override.dm deleted file mode 100644 index ffad177f0397..000000000000 --- a/maplestation_modules/story_content/armored_corps/code/mecha_weapons/laser_override.dm +++ /dev/null @@ -1,16 +0,0 @@ -/obj/item/mecha_parts/mecha_equipment/weapon/energy/er_laser - desc = "A weapon for combat exosuits. Fires a cohesive laser beam. Utilizes Extended-Range technology to aid in long-range combat. \ - Developed by the Armored Corps Ruby Rose Unit utilizing advanced technology based on analysis of high-grade crystals from the Mu Sector." - -/obj/item/mecha_parts/mecha_equipment/weapon/energy/er_laser/heavy - desc = "A weapon for combat exosuits. Fires a cohesive laser beam. Utilizes Extended-Range technology to aid in long-range combat. \ - Utilizes very high-quality crystals mined from the Mu Sector, and pretty much exclusively used by the Ruby Rose Unit of the Armored Corps. \ - Interestingly, it seems to have more output power than input power..." - -/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulsed_laser - desc = "A weapon for combat exosuits. Fires 3 small lasers in quick succession. \ - Developed by the enigmatic Dark Rafflesia Unit of the Armored Corps." - -/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulsed_laser/large - desc = "A weapon for combat exosuits. Fires 3 hellfire lasers in quick succession. \ - Developed by the Dark Rafflesia Unit to aid in target takedown missions, where one powerful strike is all that is needed." diff --git a/maplestation_modules/story_content/armored_corps/code/mecha_weapons/ppc_override.dm b/maplestation_modules/story_content/armored_corps/code/mecha_weapons/ppc_override.dm deleted file mode 100644 index f6e31ed81416..000000000000 --- a/maplestation_modules/story_content/armored_corps/code/mecha_weapons/ppc_override.dm +++ /dev/null @@ -1,7 +0,0 @@ -/obj/item/mecha_parts/mecha_equipment/weapon/energy/ppc - desc = "A weapon for combat exosuits. Shoots a powerful stream of high-energy particles. \ - Possibly the very first technology developed by the Armored Corps after it's reform from the old Armored Division days. Surprisingly, it's still a prototype." - -/obj/item/mecha_parts/mecha_equipment/weapon/energy/ppc/hellstar //admin-only - desc = "A weapon for combat exosuits. Shoots an extremely powerful stream of exotic particles capable of punching through any armoring. \ - Pretty much only available to the Scarlet Kitsun Unit, which guards the design to be used by themselves alone." diff --git a/maplestation_modules/story_content/story_posters/code/contraband.dm b/maplestation_modules/story_content/story_posters/code/contraband.dm index 31f63bb88376..41e9e2b66f16 100644 --- a/maplestation_modules/story_content/story_posters/code/contraband.dm +++ b/maplestation_modules/story_content/story_posters/code/contraband.dm @@ -1,9 +1,3 @@ -/obj/structure/sign/poster/official/post_er - name = "Wanted: Olivia \"Post\" Starfall" - desc = "If you see this dangerous person or any other member of the Clockwork Cult, please contact your appropriate commanding officer so they may alert Central Command." - icon_state = "post-er" - icon = 'maplestation_modules/story_content/story_posters/icons/contraband.dmi' - /obj/structure/sign/poster/official/mu_steve //omg,, steve,.. name = "An Interactive Guide to the Mu Sector with Steve" desc = "A poster depicting the Mu Sector's unique tour guide, a talking UFO named Steve, ready to talk all about the monarchy in the center of the cosmos." diff --git a/maplestation_modules/story_content/story_posters/icons/contraband.dmi b/maplestation_modules/story_content/story_posters/icons/contraband.dmi index 13bb3623b208..2d2756dc90ac 100644 Binary files a/maplestation_modules/story_content/story_posters/icons/contraband.dmi and b/maplestation_modules/story_content/story_posters/icons/contraband.dmi differ