From ebe11cdd719f364c7a55fc77828d7dba4c363e25 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sat, 22 Feb 2025 18:03:36 -0500 Subject: [PATCH 01/26] Bunch of stuff relating to my own story content. --- maplestation.dme | 1 + .../story_content/common_story/README.md | 1 + .../common_story/code/story_rapid_status.dm | 96 ++++++++++++++++++ .../story_posters/code/contraband.dm | 6 -- .../story_posters/icons/contraband.dmi | Bin 841 -> 626 bytes 5 files changed, 98 insertions(+), 6 deletions(-) create mode 100644 maplestation_modules/story_content/common_story/README.md create mode 100644 maplestation_modules/story_content/common_story/code/story_rapid_status.dm diff --git a/maplestation.dme b/maplestation.dme index 5d0fc3d1094b..9b108ce2ff38 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6814,6 +6814,7 @@ #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\misc\underwear.dm" +#include "maplestation_modules\story_content\common_story\code\story_rapid_status.dm" #include "maplestation_modules\story_content\post_overlay\code\post_overlay.dm" #include "maplestation_modules\story_content\shiro_equipment\code\shiroclothing.dm" #include "maplestation_modules\story_content\story_posters\code\contraband.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/story_rapid_status.dm b/maplestation_modules/story_content/common_story/code/story_rapid_status.dm new file mode 100644 index 000000000000..7ec00f22a967 --- /dev/null +++ b/maplestation_modules/story_content/common_story/code/story_rapid_status.dm @@ -0,0 +1,96 @@ +//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 = list( + "Herald of Cosmos", + ) + + 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/picked = result + + if(!picked) + return + message_admins("[key_name(usr)] has rapidly given [key_name(src)] the following preset: [picked]") + log_admin("[key_name(usr)] has rapidly given [key_name(src)] the following preset: [picked]") + + switch(picked) + if("Herald of Cosmos") // kind of like a super-ascended cosmic heretic without a stargazer and a bit of void sidepathing, no regeneration or protection beyond ehp/speed means they can be worn down. very op + src?.mind.add_antag_datum(/datum/antagonist/heretic) + var/datum/antagonist/heretic/our_heretic = src?.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 actions + if(star_touch_spell) + star_touch_spell.ascended = TRUE + + var/datum/action/cooldown/spell/conjure/cosmic_expansion/cosmic_expansion_spell = locate() in actions + cosmic_expansion_spell?.ascended = TRUE + + physiology.brute_mod = 0.25 + physiology.burn_mod = 0.25 + physiology.tox_mod = 0.5 + physiology.oxy_mod = 0.5 + physiology.stamina_mod = 0.5 + physiology.stun_mod = 0.5 + physiology.bleed_mod = 0 + set_pain_mod("badmin", 0.6) + + var/obj/item/bodypart/arm/left_arm = get_bodypart(BODY_ZONE_L_ARM) // your fists are now claws + left_arm.unarmed_attack_verb = "slash" + left_arm.grappled_attack_verb = "lacerate" + left_arm.unarmed_attack_effect = ATTACK_EFFECT_CLAW + left_arm.unarmed_attack_sound = 'sound/weapons/slash.ogg' + left_arm.unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + left_arm.unarmed_damage_low = 25 + left_arm.unarmed_damage_high = 25 + left_arm.unarmed_effectiveness = 30 + + var/obj/item/bodypart/arm/right_arm = get_bodypart(BODY_ZONE_R_ARM) + right_arm.unarmed_attack_verb = "slash" + right_arm.grappled_attack_verb = "lacerate" + right_arm.unarmed_attack_effect = ATTACK_EFFECT_CLAW + right_arm.unarmed_attack_sound = 'sound/weapons/slash.ogg' + right_arm.unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + right_arm.unarmed_damage_low = 25 + right_arm.unarmed_damage_high = 25 + right_arm.unarmed_effectiveness = 30 + + ADD_TRAIT(src, TRAIT_SLEEPIMMUNE, REF(src)) //needed to prevent chem cheese using wellcheers and sulfonal + 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 13bb3623b208562e8310d3c70ef50ffd95c56c0c..2d2756dc90acff273540da95b7513ee617016c34 100644 GIT binary patch delta 434 zcmV;j0ZsnN2J!?liBL{Q4GJ0x0000DNk~Le0000W0000W2m=5B07RsU#sB~SoKQ?u zMZmzoNlHXFH#m_>Bnc-cDS{No0001yab^`!@W_o52zRisw4#P)71B94?YDH`T=4;P1E2{#H!D02w}toe+q#FF1zv`$PcsB c68J;?0!il>@($3P<^TWy07*qoM6N<$f|K*OqW}N^ delta 651 zcmV;60(AZI1jzGW{I15&JYH@^jOl!H=A7h0?A_{0Zb z1~QgTF$YKhibBt3dZvpEt#AOEI-~~Tlm$Sc^h`>fDV4#v#UTUAkI&%rtRN3kqKl$n z9Z>%czyxcgGOP!e-8*8U=Y*7W&Q`0*6892Aol^Th1j(a^UHYs_a;*?h|7Rd z3@L(?+emP9eLKaHFP3wxf4cJ>$bS0%?g5^i^TqPz zg$RBNLPnn{;w!Tca=gkdfXP5m3pjNow=do@0<5sEDwm6SRaIPwf0EWAA|F^E24g_J zdR^s}G3DFB)=kBPxJ}Rnz-2%VT2tF~S+1?A#}f>Ie_{YRtlPS=sJd>MRiN&j1D6DM zm@JsCYZ@$X4F`za=${@S$9fBO({){I-r2*nAro$Fn8W0@fwgONVBW3u0dgb14i2#0 lOU3~ALrKQk@%wMq6$j`TEC68wL!$ry002ovPDHLkV1j##7vul{ From 2b2c882c54f872cd1f5ec31b22fc8774d50e8d05 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sat, 22 Feb 2025 18:13:15 -0500 Subject: [PATCH 02/26] I am amazed at how errorprone the automatic file ticking can be. --- .../crit_equipment/code/pendant.dm | 19 ++++++++++++++++++ .../crit_equipment/icons/greenleaf_amulet.dmi | Bin 0 -> 490 bytes .../icons/greenleaf_amulet_worn.dmi | Bin 0 -> 319 bytes 3 files changed, 19 insertions(+) create mode 100644 maplestation_modules/story_content/crit_equipment/code/pendant.dm create mode 100644 maplestation_modules/story_content/crit_equipment/icons/greenleaf_amulet.dmi create mode 100644 maplestation_modules/story_content/crit_equipment/icons/greenleaf_amulet_worn.dmi 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..82062c7362ea --- /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/icons/greenleaf_amulet.dmi b/maplestation_modules/story_content/crit_equipment/icons/greenleaf_amulet.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f35d039192b48346e2829f6ecc303384218cee22 GIT binary patch literal 490 zcmVxC6FR1M% z3ylB(0MkiCK~zYI?UB(AgCGn=L5pZ99peB0>xvqa31}Afw0IwU;Mmg^lzQ@C(T%)a z&^2<^H}dugTJPZ3Tz9?xhMzXR literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..83a6a052fc74fa22ebd613152bb93d761c8b47c3 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e(Ey(i*8>L*XsCK;aBwUW5tLYX zSh!-H0#};&7MC`l0>+XczhDN3XE)M-oYJb0h!U67;^d;tf|AVqJO+k}Il*BCMWx@r z1Q&e#`b5iHSL@uF^T8WJ4K5l#c%*aQNAn~@QBUs<3*#W;%f?;`a~@4PGATqMSaYw2 zsj0rYsiCf&;dT@CtuCG2#;TiFNGzG(ZM;^)&|LJ0*^{8Kg0IDlw;32V&6k_ky54*j z&;j9|E{-7{oyiFjtWy}=6prXCXgD}9vIz(&EI6Rj(7 Date: Wed, 28 May 2025 22:02:18 -0400 Subject: [PATCH 03/26] Updates to attack chain stuffs --- .../common_story/code/story_rapid_status.dm | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) 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 index 7ec00f22a967..8827c7e08c97 100644 --- a/maplestation_modules/story_content/common_story/code/story_rapid_status.dm +++ b/maplestation_modules/story_content/common_story/code/story_rapid_status.dm @@ -71,9 +71,10 @@ physiology.stun_mod = 0.5 physiology.bleed_mod = 0 set_pain_mod("badmin", 0.6) + add_consciousness_modifier("badmin", 30) var/obj/item/bodypart/arm/left_arm = get_bodypart(BODY_ZONE_L_ARM) // your fists are now claws - left_arm.unarmed_attack_verb = "slash" + left_arm.unarmed_attack_verbs = list("slash") left_arm.grappled_attack_verb = "lacerate" left_arm.unarmed_attack_effect = ATTACK_EFFECT_CLAW left_arm.unarmed_attack_sound = 'sound/weapons/slash.ogg' @@ -81,9 +82,10 @@ left_arm.unarmed_damage_low = 25 left_arm.unarmed_damage_high = 25 left_arm.unarmed_effectiveness = 30 + left_arm.appendage_noun = "clawed hand" var/obj/item/bodypart/arm/right_arm = get_bodypart(BODY_ZONE_R_ARM) - right_arm.unarmed_attack_verb = "slash" + right_arm.unarmed_attack_verbs = list("slash") right_arm.grappled_attack_verb = "lacerate" right_arm.unarmed_attack_effect = ATTACK_EFFECT_CLAW right_arm.unarmed_attack_sound = 'sound/weapons/slash.ogg' @@ -91,6 +93,17 @@ right_arm.unarmed_damage_low = 25 right_arm.unarmed_damage_high = 25 right_arm.unarmed_effectiveness = 30 + right_arm.appendage_noun = "clawed hand" + + var/obj/item/bodypart/leg/left_leg = 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 = 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(src, TRAIT_SLEEPIMMUNE, REF(src)) //needed to prevent chem cheese using wellcheers and sulfonal From 251642b767319e29c2fcbac64dea3d4823730d53 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sat, 12 Jul 2025 02:11:41 -0400 Subject: [PATCH 04/26] Evil creatura, Death from Beyond --- .../code/mecha_weapons/gauss_override.dm | 3 - .../code/mecha_weapons/laser_override.dm | 16 ----- .../code/mecha_weapons/ppc_override.dm | 7 --- .../code/mob/basic/summoned_star_gazer.dm | 14 +++++ .../code/smites/death_from_beyond.dm | 58 +++++++++++++++++++ .../common_story/code/story_rapid_status.dm | 2 +- 6 files changed, 73 insertions(+), 27 deletions(-) delete mode 100644 maplestation_modules/story_content/armored_corps/code/mecha_weapons/gauss_override.dm delete mode 100644 maplestation_modules/story_content/armored_corps/code/mecha_weapons/laser_override.dm delete mode 100644 maplestation_modules/story_content/armored_corps/code/mecha_weapons/ppc_override.dm create mode 100644 maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm create mode 100644 maplestation_modules/story_content/common_story/code/smites/death_from_beyond.dm 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/common_story/code/mob/basic/summoned_star_gazer.dm b/maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm new file mode 100644 index 000000000000..103e0f26f8d0 --- /dev/null +++ b/maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm @@ -0,0 +1,14 @@ +/// Weaker version of the star gazer, meant to be fought instead of being an invincible gigafighter +/mob/living/basic/heretic_summon/star_gazer/summoned + maxHealth = 750 + health = 750 + obj_damage = 60 + melee_damage_lower = 25 + melee_damage_upper = 25 + damage_coeff = list(BRUTE = 1, BURN = 0.8, TOX = 0, STAMINA = 0, OXY = 0) + +/mob/living/basic/heretic_summon/star_gazer/summoned/Initialize(mapload) + . = ..() + RemoveElement(/datum/element/death_explosion) // slightly hacky way of disabling the death explosion without editing the base star gazer + RemoveElement(/datum/element/effect_trail) + RemoveComponentSource(REF(src), /datum/component/regenerator) 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/story_rapid_status.dm b/maplestation_modules/story_content/common_story/code/story_rapid_status.dm index 8827c7e08c97..8096171e1fbd 100644 --- a/maplestation_modules/story_content/common_story/code/story_rapid_status.dm +++ b/maplestation_modules/story_content/common_story/code/story_rapid_status.dm @@ -27,7 +27,7 @@ log_admin("[key_name(usr)] has rapidly given [key_name(src)] the following preset: [picked]") switch(picked) - if("Herald of Cosmos") // kind of like a super-ascended cosmic heretic without a stargazer and a bit of void sidepathing, no regeneration or protection beyond ehp/speed means they can be worn down. very op + if("Herald of Cosmos") // kind of like a super-ascended cosmic heretic without a stargazer and a bit of void sidepathing, no regeneration or total protection beyond ehp/speed means they can be worn down. very op src?.mind.add_antag_datum(/datum/antagonist/heretic) var/datum/antagonist/heretic/our_heretic = src?.mind.has_antag_datum(/datum/antagonist/heretic) var/list/knowledges_to_grant = list( // cosmic heretic with a sidepath, some void spells and no ascension From a56b3e64b527bd487d4f29db764b3c8845bd5a58 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 28 Sep 2025 19:49:47 -0400 Subject: [PATCH 05/26] fixes stuff i guess --- .../common_story/code/mob/basic/summoned_star_gazer.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm b/maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm index 103e0f26f8d0..e51654a6af74 100644 --- a/maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm +++ b/maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm @@ -9,6 +9,6 @@ /mob/living/basic/heretic_summon/star_gazer/summoned/Initialize(mapload) . = ..() - RemoveElement(/datum/element/death_explosion) // slightly hacky way of disabling the death explosion without editing the base star gazer - RemoveElement(/datum/element/effect_trail) + src.RemoveElement(/datum/element/death_explosion) // slightly hacky way of disabling the death explosion without editing the base star gazer + src.RemoveElement(/datum/element/effect_trail) RemoveComponentSource(REF(src), /datum/component/regenerator) From d76f9460de2aeca6349a6180bb7b0e2d0d43fae9 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 26 Oct 2025 16:19:47 -0400 Subject: [PATCH 06/26] Adds in Hunter's Smoke --- maplestation.dme | 19 +++++++++++ .../code/tevetia_spells/dark_smoke.dm | 32 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 maplestation_modules/story_content/crit_equipment/code/tevetia_spells/dark_smoke.dm diff --git a/maplestation.dme b/maplestation.dme index 9b108ce2ff38..0f15eced088c 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6815,6 +6815,25 @@ #include "maplestation_modules\story_content\armored_corps\code\melee\void_blade.dm" #include "maplestation_modules\story_content\misc\underwear.dm" #include "maplestation_modules\story_content\common_story\code\story_rapid_status.dm" +<<<<<<< HEAD +======= +#include "maplestation_modules\story_content\common_story\code\mob\basic\summoned_star_gazer.dm" +#include "maplestation_modules\story_content\common_story\code\smites\death_from_beyond.dm" +#include "maplestation_modules\story_content\crit_equipment\code\tevetia_spells\dark_smoke.dm" +#include "maplestation_modules\story_content\crit_equipment\code\pendant.dm" +#include "maplestation_modules\story_content\eveleen_equipment\code\clothing.dm" +#include "maplestation_modules\story_content\grey_equipment\code\greyclothing.dm" +#include "maplestation_modules\story_content\isaac_equipment\code\isaacclothing.dm" +#include "maplestation_modules\story_content\jessie_equipment\code\jessie_clothing.dm" +#include "maplestation_modules\story_content\laurence_equipment\code\laurence_clothing.dm" +#include "maplestation_modules\story_content\lini_equipment\code\liniclothing.dm" +#include "maplestation_modules\story_content\localnode_equipment\localnode_core.dm" +#include "maplestation_modules\story_content\molly_equipment\code\mollyclothing.dm" +#include "maplestation_modules\story_content\noname_equipment\code\nonameclothing.dm" +#include "maplestation_modules\story_content\noname_equipment\code\nonameitems.dm" +#include "maplestation_modules\story_content\nurse_equipment\code\vinceclothing.dm" +#include "maplestation_modules\story_content\phoneguy_equipment\code\headphone.dm" +>>>>>>> 8a71979bb3b (Adds in Hunter's Smoke) #include "maplestation_modules\story_content\post_overlay\code\post_overlay.dm" #include "maplestation_modules\story_content\shiro_equipment\code\shiroclothing.dm" #include "maplestation_modules\story_content\story_posters\code\contraband.dm" 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() From e76673933c539f405386d1f1995d31c2342fa7cf Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 16 Nov 2025 17:44:30 -0500 Subject: [PATCH 07/26] Fixed up dme, story lazy templates are now more modular --- maplestation.dme | 16 ++++++++ .../common_story/code/story_lazy_template.dm | 37 +++++++++++++++++++ .../code/library/lazy_templates.dm | 6 +++ 3 files changed, 59 insertions(+) create mode 100644 maplestation_modules/story_content/common_story/code/story_lazy_template.dm create mode 100644 maplestation_modules/story_content/crit_equipment/code/library/lazy_templates.dm diff --git a/maplestation.dme b/maplestation.dme index 0f15eced088c..ad845d6bbb90 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6808,6 +6808,12 @@ #include "maplestation_modules\code\modules\wiremod\component_printer.dm" #include "maplestation_modules\code\modules\wiremod\shells.dm" #ifdef MAPLESTATION_STORY_CONTENT +<<<<<<< HEAD +======= +#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" +>>>>>>> 0c17c97271b (Fixed up dme, story lazy templates are now more modular) #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" @@ -6816,9 +6822,19 @@ #include "maplestation_modules\story_content\misc\underwear.dm" #include "maplestation_modules\story_content\common_story\code\story_rapid_status.dm" <<<<<<< HEAD +<<<<<<< HEAD ======= #include "maplestation_modules\story_content\common_story\code\mob\basic\summoned_star_gazer.dm" #include "maplestation_modules\story_content\common_story\code\smites\death_from_beyond.dm" +======= +#include "maplestation_modules\story_content\common_story\code\story_lazy_template.dm" +#include "maplestation_modules\story_content\common_story\code\mob\basic\summoned_star_gazer.dm" +#include "maplestation_modules\story_content\common_story\code\smites\death_from_beyond.dm" +#include "maplestation_modules\story_content\crit_equipment\code\areas.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" +>>>>>>> 0c17c97271b (Fixed up dme, story lazy templates are now more modular) #include "maplestation_modules\story_content\crit_equipment\code\tevetia_spells\dark_smoke.dm" #include "maplestation_modules\story_content\crit_equipment\code\pendant.dm" #include "maplestation_modules\story_content\eveleen_equipment\code\clothing.dm" 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..54f34a6ba89b --- /dev/null +++ b/maplestation_modules/story_content/common_story/code/story_lazy_template.dm @@ -0,0 +1,37 @@ +/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 + + if(!isobserver(user.mob)) + SSadmin_verbs.dynamic_invoke_verb(user, /datum/admin_verb/admin_ghost) + user.mob.forceMove(reservation.bottom_left_turfs[1]) + + message_admins("[key_name_admin(user)] has loaded lazy template '[choice]'") + 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/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" From a771b91436089ab7c7f8ef2f482f49474879311d Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 16 Nov 2025 18:00:36 -0500 Subject: [PATCH 08/26] Observing the newly loaded lazy template is a choice now --- .../common_story/code/story_lazy_template.dm | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) 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 index 54f34a6ba89b..fa51f3026bab 100644 --- a/maplestation_modules/story_content/common_story/code/story_lazy_template.dm +++ b/maplestation_modules/story_content/common_story/code/story_lazy_template.dm @@ -29,9 +29,17 @@ ADMIN_VERB(load_story_lazy_template, R_ADMIN, "Load/Jump Story Lazy Template", " to_chat(user, span_boldwarning("Failed to load template!")) return - if(!isobserver(user.mob)) - SSadmin_verbs.dynamic_invoke_verb(user, /datum/admin_verb/admin_ghost) - user.mob.forceMove(reservation.bottom_left_turfs[1]) - message_admins("[key_name_admin(user)] has loaded lazy template '[choice]'") - to_chat(user, span_boldnicegreen("Template loaded, you have been moved to the bottom left of the reservation.")) + 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.")) From 614da213a294ef7b84a38be66c4105c30279ae23 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 16 Nov 2025 18:59:20 -0500 Subject: [PATCH 09/26] Adds in a kanabo. --- maplestation.dme | 9 +++++++++ .../crit_equipment/code/library/weapons.dm | 18 ++++++++++++++++++ .../crit_equipment/icons/kanabo.dmi | Bin 0 -> 326 bytes .../crit_equipment/icons/kanabo_lefthand.dmi | Bin 0 -> 359 bytes .../crit_equipment/icons/kanabo_righthand.dmi | Bin 0 -> 368 bytes 5 files changed, 27 insertions(+) create mode 100644 maplestation_modules/story_content/crit_equipment/code/library/weapons.dm create mode 100644 maplestation_modules/story_content/crit_equipment/icons/kanabo.dmi create mode 100644 maplestation_modules/story_content/crit_equipment/icons/kanabo_lefthand.dmi create mode 100644 maplestation_modules/story_content/crit_equipment/icons/kanabo_righthand.dmi diff --git a/maplestation.dme b/maplestation.dme index ad845d6bbb90..ac162432b4b2 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6819,6 +6819,7 @@ #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" +<<<<<<< HEAD #include "maplestation_modules\story_content\misc\underwear.dm" #include "maplestation_modules\story_content\common_story\code\story_rapid_status.dm" <<<<<<< HEAD @@ -6827,14 +6828,22 @@ #include "maplestation_modules\story_content\common_story\code\mob\basic\summoned_star_gazer.dm" #include "maplestation_modules\story_content\common_story\code\smites\death_from_beyond.dm" ======= +======= +#include "maplestation_modules\story_content\bell_equipment\code\bellclothing.dm" +>>>>>>> 863ff942946 (Adds in a kanabo.) #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\mob\basic\summoned_star_gazer.dm" #include "maplestation_modules\story_content\common_story\code\smites\death_from_beyond.dm" #include "maplestation_modules\story_content\crit_equipment\code\areas.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" +<<<<<<< HEAD >>>>>>> 0c17c97271b (Fixed up dme, story lazy templates are now more modular) +======= +#include "maplestation_modules\story_content\crit_equipment\code\library\weapons.dm" +>>>>>>> 863ff942946 (Adds in a kanabo.) #include "maplestation_modules\story_content\crit_equipment\code\tevetia_spells\dark_smoke.dm" #include "maplestation_modules\story_content\crit_equipment\code\pendant.dm" #include "maplestation_modules\story_content\eveleen_equipment\code\clothing.dm" 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..335e6528e4f9 --- /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/icons/kanabo.dmi b/maplestation_modules/story_content/crit_equipment/icons/kanabo.dmi new file mode 100644 index 0000000000000000000000000000000000000000..228bf4b7b3ec2d77f958afedc50234e504a35e8f GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)*Z=?j_jRr=&g&B6;IL3r zGLVxpw+wMLGl&e$E?VhP1XRXY666=m;PC858jzD!6%tY6l3JWxlvz-cnV-kNP%$Ss zte~j$`obt8QK)p^0JOu5K`_L* SHFyJ%$>8bg=d#Wzp$Pz`l5zV0 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..66ad7ef8f3cb4b3d5f8b350bd3f8bef809e91d1d GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e(Ey(i*Z=?ji*ayRs42Oc85HMr z^>wZ`w+!LgI#mRyfUzXVFPOpM*^M+HC%Y;nqQoV&IJqdZpd>RtkAb0LPH^4^2yh370cen9c4MTI$BW6#6!V10?GtTB_2s4$cy4KrO1+=!))5S5wqcb@{ zf^~62l7fpzqe57q8!OW-iCzv#9UfCB$>oAdj0##TySW_>7&5x3Sv?35U^7y3(P7xG z?cnynkRgX9jv2@>Wyok@sAG0JsIfpXL1{_D#A|v7CLN8OP|UJThwtR=fCk;>)=q_< x1M{3Gf(Svk2d5qtC>NxDG+@+7UXfbJuw#;7_U`RF9s(W3;OXk;vd$@?2>?UaeVPCO literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..48fb1b6bd11d1c83eef46bec2e293c938ae8558c GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e(Ey(i*Z=?jTc|0Cad5br8T56o zF3#&Rw+v}o`_T@lfUzXVFPOpM*^M+HC%Y;nqQoV&IJqdZpd>RtkAb0LPH^4^2yh370cen9c4MTI$BW6#6!V10?GtTB_2s4$cy4KrO1+;dOr;B5VM`v<^ z1nc4kt%ktH1|~HXR;LyoW2FTS679KXm;`Qxa!%I{kv&in#GtphS?B=U3d;vU57^9@ zwlfMSe~@4>WSY;Ip!`9S!NiGi{u>Pm)+bDiPFx}{9&oTZJ8?~MnqZ+5VI;g-N~qme zG?>v_=n%)W1tL0S3X+Xy8B&xtNH?UglrcNFIY|24;FUPTz~C*&uk^uX@?oIs7(8A5 KT-G@yGywo_EqV0- literal 0 HcmV?d00001 From 82d695d38f1fff59e9d71c46ea553496ea31acc7 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Tue, 9 Dec 2025 18:48:04 -0500 Subject: [PATCH 10/26] Adds in a lot more rapid statuses and spells for them. --- .../heretic/magic/furious_steel.dm | 10 +- maplestation.dme | 14 +++ .../code/rapid_statuses/lunar_judge.dm | 56 ++++++++++ .../code/rapid_statuses/rabid_shadowfiend.dm | 40 +++++++ .../common_story/code/spells/shadow_knife.dm | 26 +++++ .../common_story/code/spells/shadow_steel.dm | 75 ++++++++++++++ .../common_story/code/story_rapid_status.dm | 98 ++---------------- .../code/story_rapid_status_datum.dm | 19 ++++ .../icons/literally_just_the_moon.dmi | Bin 0 -> 2140 bytes .../crit_equipment/code/heat_blade.dm | 26 +++++ .../code/rapid_statuses/_cosmos.dm | 14 +++ .../code/rapid_statuses/herald_of_cosmos.dm | 66 ++++++++++++ .../code/rapid_statuses/prince_of_cosmos.dm | 17 +++ .../code/rapid_statuses/princess_of_cosmos.dm | 15 +++ .../code/rapid_statuses/silvered_huntress.dm | 37 +++++++ 15 files changed, 425 insertions(+), 88 deletions(-) create mode 100644 maplestation_modules/story_content/common_story/code/rapid_statuses/lunar_judge.dm create mode 100644 maplestation_modules/story_content/common_story/code/rapid_statuses/rabid_shadowfiend.dm create mode 100644 maplestation_modules/story_content/common_story/code/spells/shadow_knife.dm create mode 100644 maplestation_modules/story_content/common_story/code/spells/shadow_steel.dm create mode 100644 maplestation_modules/story_content/common_story/code/story_rapid_status_datum.dm create mode 100644 maplestation_modules/story_content/common_story/icons/literally_just_the_moon.dmi create mode 100644 maplestation_modules/story_content/crit_equipment/code/heat_blade.dm create mode 100644 maplestation_modules/story_content/crit_equipment/code/rapid_statuses/_cosmos.dm create mode 100644 maplestation_modules/story_content/crit_equipment/code/rapid_statuses/herald_of_cosmos.dm create mode 100644 maplestation_modules/story_content/crit_equipment/code/rapid_statuses/prince_of_cosmos.dm create mode 100644 maplestation_modules/story_content/crit_equipment/code/rapid_statuses/princess_of_cosmos.dm create mode 100644 maplestation_modules/story_content/crit_equipment/code/rapid_statuses/silvered_huntress.dm 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 ac162432b4b2..77b59ac0f715 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6833,9 +6833,15 @@ >>>>>>> 863ff942946 (Adds in a kanabo.) #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\mob\basic\summoned_star_gazer.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" @@ -6843,7 +6849,15 @@ >>>>>>> 0c17c97271b (Fixed up dme, story lazy templates are now more modular) ======= #include "maplestation_modules\story_content\crit_equipment\code\library\weapons.dm" +<<<<<<< HEAD >>>>>>> 863ff942946 (Adds in a kanabo.) +======= +#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" +>>>>>>> 1b4512d6e3d (Adds in a lot more rapid statuses and spells for them.) #include "maplestation_modules\story_content\crit_equipment\code\tevetia_spells\dark_smoke.dm" #include "maplestation_modules\story_content\crit_equipment\code\pendant.dm" #include "maplestation_modules\story_content\eveleen_equipment\code\clothing.dm" 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..d5eb9b273faf --- /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/spells/shadow_knife.dm b/maplestation_modules/story_content/common_story/code/spells/shadow_knife.dm new file mode 100644 index 000000000000..22ab991a0930 --- /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(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + +// Expires on drop unlike the regular knife. +/obj/item/knife/combat/ice/shadow/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_rapid_status.dm b/maplestation_modules/story_content/common_story/code/story_rapid_status.dm index 8096171e1fbd..427175ef7833 100644 --- a/maplestation_modules/story_content/common_story/code/story_rapid_status.dm +++ b/maplestation_modules/story_content/common_story/code/story_rapid_status.dm @@ -12,98 +12,22 @@ if(!check_rights(R_SPAWN)) return - var/list/options = list( - "Herald of Cosmos", - ) + 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/picked = result + 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: [picked]") - log_admin("[key_name(usr)] has rapidly given [key_name(src)] the following preset: [picked]") - - switch(picked) - if("Herald of Cosmos") // kind of like a super-ascended cosmic heretic without a stargazer and a bit of void sidepathing, no regeneration or total protection beyond ehp/speed means they can be worn down. very op - src?.mind.add_antag_datum(/datum/antagonist/heretic) - var/datum/antagonist/heretic/our_heretic = src?.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 actions - if(star_touch_spell) - star_touch_spell.ascended = TRUE - - var/datum/action/cooldown/spell/conjure/cosmic_expansion/cosmic_expansion_spell = locate() in actions - cosmic_expansion_spell?.ascended = TRUE - - physiology.brute_mod = 0.25 - physiology.burn_mod = 0.25 - physiology.tox_mod = 0.5 - physiology.oxy_mod = 0.5 - physiology.stamina_mod = 0.5 - physiology.stun_mod = 0.5 - physiology.bleed_mod = 0 - set_pain_mod("badmin", 0.6) - add_consciousness_modifier("badmin", 30) - - var/obj/item/bodypart/arm/left_arm = get_bodypart(BODY_ZONE_L_ARM) // your fists are now claws - left_arm.unarmed_attack_verbs = list("slash") - left_arm.grappled_attack_verb = "lacerate" - left_arm.unarmed_attack_effect = ATTACK_EFFECT_CLAW - left_arm.unarmed_attack_sound = 'sound/weapons/slash.ogg' - left_arm.unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' - left_arm.unarmed_damage_low = 25 - left_arm.unarmed_damage_high = 25 - left_arm.unarmed_effectiveness = 30 - left_arm.appendage_noun = "clawed hand" - - var/obj/item/bodypart/arm/right_arm = get_bodypart(BODY_ZONE_R_ARM) - right_arm.unarmed_attack_verbs = list("slash") - right_arm.grappled_attack_verb = "lacerate" - right_arm.unarmed_attack_effect = ATTACK_EFFECT_CLAW - right_arm.unarmed_attack_sound = 'sound/weapons/slash.ogg' - right_arm.unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' - right_arm.unarmed_damage_low = 25 - right_arm.unarmed_damage_high = 25 - right_arm.unarmed_effectiveness = 30 - right_arm.appendage_noun = "clawed hand" - - var/obj/item/bodypart/leg/left_leg = 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 = 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(src, TRAIT_SLEEPIMMUNE, REF(src)) //needed to prevent chem cheese using wellcheers and sulfonal + 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 0000000000000000000000000000000000000000..be3bf6d72e7e4345525e37f15d24a5f78ab524f3 GIT binary patch literal 2140 zcmWNTe>l_Y8^;&YiZtb06Ja${*UHqIA0f%GuU|={kJ?I1lEq@2(V_ep7Q@skJ0#AT znpmx<{ARH_E6UUkl29!qWi-Eboac|{exB>OuKT&}>%L#__x0o)_VZl3X7d^t47Qf& z<$eV07GRmfbwOkWb?3rh@NGo*gGaq`I<6D5O%=w{)Y`_7$|~WRq~7Y%4(?xtR4p@^ z4rKKYj&AT1g@}ivQ1zcqpVo3fXPI7H?T}$_HyoDj-+7Qsme(?NIpj9ncjgurxsD%eOd1k3e_l@YA5UmlI$%C~1>-00%^RKDK?pEQ zB&)p|25Z!dnx=IJmhNAt_Aw;bno{TFU!DAzX2|7hX-|51t6C#<>RxP~T0B!J9~+Ox zA0mD^CuSxiPeoJ(1$WV|GVX(h{D_pAw zXGvV&gX>_BPbdg-9Gd9HMQ_}=(MvwVq7B&8*DO{p!#|F6T**%^O{CN5KcB}tQe$G) z!64onMoChWL2LM)+tzDfA=Ml8^z`7U!$vDFWoBkxzxDgCKJyPEj9TYO>~MSM?L%4h zRH&{9eLJWMMOMyFGK{z+#*ED-%{BWYbbKlUzf8z+ zR420y1jFE(6T>BmALdJ^7Hx*~KDHV;X=daH^dvuKh9y}q#JTw{3)xQHw))ycE z#CZGtVShOkd6i0R8Cst2?CiWH!G0UuP!?3>ED{P2ldcWNdX*}@xb6W)U?LC?j>;ZI zcB?>%!?D>2El`<^J2^=M&BF6-OZ=EKZ#>W9`8NbagihDwz~j`5b3cYR8O*p=%IPGM zh6Pv%eIAK(Q!tJ)ZUu1BK5}<>TYI~fx3@RQsd{^w!MIjiyD#FQF(IH#xRYI8pmeBs zlU)@o>X}S@fTw^gX{?D2yy-)l48+2b(C{ zeFN+2>a5vm;3YJ%yf6B~(j47KeoxF8@7;mN<73I2NF=&xRzgFb;Ot4~*V^=yMb)-3;~j};u%I2;?Pl{_t7d*`lj z92OlDvlpok#6ec%l*6G9qTYDNzlNr^$u3y>#jPkdISTQ<)_0A`D0{6awK!RBYTioDn z(fF!}Ef$=x&3U@4&{*(PnnkP1DJVEt>3sD(jrJ;f;KQn~2@MbZD&y>AVw+bHd)u+k z>S)tWo+J|R4*f&%WGRCTVBk?nZdV06G$}0$R`4{Y(1AG}ZW%E#F#$*Y)7RJcfVO|B z*XWKgiOBsk%4&Pj>LyD5i|}^SC@d22!=wKE-Y_M8_%JZ9OmOyPvKNmElum`jPo5m> ztEEDb#U4EB^>w+og+dX;BOqBXBle0hVNPc9DYbFF^tsr_R63L7%#xruqpv4sk@~u% z1?A_x`V|+RS+j-B+2z?l02hZ+H859GY0Uo!KmAeeRIIBdI*uN4?3e{y>*CNE$C998 zn~YWld3@H9$o**Fl@j+mCX!tah6JeoUUK~Lc@4;aJn%{&A7hdg4`_Te5r);*meOzd zSbbu0luS4ZAPIQ?n7$6E&!eL4@4we@(VtS^B!^ zeBf8iu_D_8D_>70sNO`*ESVv?gm!cCwxPSG4e=UtZ5dS2yEP*Q}yDe`I}4x9EJ5Q>geb=Ir;6|(g@|j_heg# z)PI*wI+k=Py8dubNzp`3-2m;<`1{JUo9~M@seE3^v=_IBlNB2X0Vx+W3$rTq71dL_ zit~>b6DsA*D94iKPmBL1no0v)TvWi-Wir_(CZ+8q4Y-MzB5Dzw?Z0w;H+ey-?D(yW zZwMUEfw3?%7FS10ZK8C<6&e+6z|^s!ud8NO!n8RyGr(NN-fkhV_TOO=Iv5!=F&wkFEPNc O0Y)VFx!1UzO8XDtejNY+ literal 0 HcmV?d00001 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/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 From 0cac3faddbc9064ed8a1b2ff78568ca18d5c8498 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Tue, 9 Dec 2025 18:49:50 -0500 Subject: [PATCH 11/26] Fixes some dmi jank with the moon sprite --- .../icons/literally_just_the_moon.dmi | Bin 2140 -> 2291 bytes 1 file changed, 0 insertions(+), 0 deletions(-) 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 index be3bf6d72e7e4345525e37f15d24a5f78ab524f3..8921b0de2ab4a399b5f7296253ddc6a11aedd36b 100644 GIT binary patch literal 2291 zcmWkwdpy(YAO9YPvC&Sg%zdksB|nY!V=g7Pn4-*eP6}(~QtlkrtPxr+wd9=Kn?oT) z$w6|Bem|GFu_&%TS^ZC4QukW1;wwAIoiZT!c$x^J$sbI(c zeBhE`4UUXl0h@26gG-1xBbXlK9T4K}?*~EQ*@rtCWSCgAWbelBEuQ0ut)QV+VLw z+ma_&I78NwF5bVRFrm;E+^VesL2xsQxru|z?YGW0UKfWHPOiU+8n2kyu_{P@_Ndag zQzt3?-GQ<|BF3&x_GMA`k;V2gSifUmQ8*4^ee{kV4lN(&N(c?Cmo7w@rBoJ6-^!p) zG-g__Vb7|hbe!=2l-0MDvp#V9M1?Iw-S+5|-}tm)qR3D%D!M;C&4_-Kc(ZsG`XFB$ z{dJ0R2-!L$VM6x7v^y6)c~TZu-%wv$`_YOsrBC_Le zQv7NV5X$1$42B8X0%8gxX2a?`^z`)hRJ)e#$+L7%LpV7(O_5V$2ZXCdFEr!ulrJ%A zV}9~Nq44<)CFq_&Uol1U;?P@nBB;fTrSUPTd@Nk-Sy|b{+TzIgWfzx??`K1?omF{3 zJ>#P_{%Rb&N$H?zMTu*cqtn>(kj(AvAY zkX%Ab*>5!$N(bNkm@lmuPE$R(*@=*Ty|q+dF<1Aa)2CYFX$gC4T|@`v=~QAnk=p2i zfwQ1DqC=^4l<8@>iE;;kt>Mz1k&%%Lj{CvUMDI-ZWE`CJK;1TbV{CJ??nKMBgIv0G zVT}SkTU&DE)%~KQaNN5pq#YW^3l8Y{H34^SAYQZu2F?z);=~*A`h2SIF%%M7aYnq> z(NSfMhcal3W_Mz*no;<3*yo&+iY_#oHiqtxGX1=DDzZTpPZ6V^*WYWJPmm!CFiJ|T zZEY}6@%}y9r&@7-)c|~{N>iMU1aR2cuSA|4tqqm}3^w)j$bB`670&h*tP1XY0UF7~ z!UNpoBXZ@-o}{x-ERs#1UkzxlZcNJ{M-Gld!G7TqSizS@ogMdQFn~D8so-r35r%8K zho4J12_p;CEt%QDQ{M+jjAX#L6$eJk@Sq)-B)9+b&w(mUvzieJ9PFXBMB*N`1TMj% zCRN2S;p0adCgGQMOo&^@$_mNcZo6Go7G*l~0Dp@?1Bj;bPiHW^G9`QT9ULu+9mH_3 z#W1BRO?p_^0T$LhC}^*goHElp^Qlv5e!8cxFCtKx9vP`vr5Q(M10(_4CG!)7g@-4$ zzkl;KIgN@pC`3~@*i$g@dvO6hmG$*^ ziO7jMtt0B{mCv6;9f3eW&H8#bMx3C9{_`+`PJ0OCRqZ+(Vo*S~K*91?=KeC`nbnU; z7QTc(v4c`HGX?s1O3O08!>-J!&x_Q1UAI}^l7oLb=<_)nQ7)9>rDE4(jP1}8Ca7ei zyKz!`Jc*d5KxLF^6DE#JNaADc?d`*-A38VbcLb2*H9K$nwGho~FD7Vqdg*3ikdj23 zebufv{(2nl>+9zkbP4BOdU^*_rA@tV3u;Sf)qx`hAy6hWucfeY)(%`&E2xD*Z( z#WLbeM5spp^a&9up227)BD=b}nn*V0b|JgN)xM1z=?Dxx_HaBpcVT_Yi=;TazJ-xX z1n$hSmGaIsb#xqUh>}lJGuF~1un(S5r%IYI zok}H!LMxVVsDz0QTET1dvTbp%^w7UxOwiK1qRO7y#;mLBLvdvUTNeSQ%%ll@!JRPL48mR)9OX5Ba=p?*8L-85WHOT4N93CEy;(6X=|Lkd4xcX@+ z#GstO?j^~BxU@q*9+>+KlmbWx8s7b}Lk^us&jD(Q_M;W&8vWO!(lz1JDwi%hZ-^$DA8zYil!Ko@dY`O;Bvh zbB=>8MRn!78#CQm&bvyYTH_C zh)9GW*(sz)pDY0J&gb(5$1lIxej)H^2soCTl@%4RJo(m_&5hp2{I4qsBzd_I1d+I4 z+xz}C&yjCNc#6(Jh5uD;7a-)dwx?>bc@_|KKwf?~bgsX!Griv$ZE-n;|L0y)8C1JV z-SH<1^1L@*a=c-C5uLV#?$l`XVju@8`GFIyg9J?2~yQJonmF+SMzx zBLO{ko9=K4t1+>0)XgZjq1eCc>NY=Fs>Qtg_UP?0r|~K;_u<3+#ZILvxp{fU7q$LS zcW`8^M#ea!-$t!3jn!YS7-~IE6(RO*#OB3{!=|O;umf3E;4cQESlF7Eo4T|91l_Y8^;&YiZtb06Ja${*UHqIA0f%GuU|={kJ?I1lEq@2(V_ep7Q@skJ0#AT znpmx<{ARH_E6UUkl29!qWi-Eboac|{exB>OuKT&}>%L#__x0o)_VZl3X7d^t47Qf& z<$eV07GRmfbwOkWb?3rh@NGo*gGaq`I<6D5O%=w{)Y`_7$|~WRq~7Y%4(?xtR4p@^ z4rKKYj&AT1g@}ivQ1zcqpVo3fXPI7H?T}$_HyoDj-+7Qsme(?NIpj9ncjgurxsD%eOd1k3e_l@YA5UmlI$%C~1>-00%^RKDK?pEQ zB&)p|25Z!dnx=IJmhNAt_Aw;bno{TFU!DAzX2|7hX-|51t6C#<>RxP~T0B!J9~+Ox zA0mD^CuSxiPeoJ(1$WV|GVX(h{D_pAw zXGvV&gX>_BPbdg-9Gd9HMQ_}=(MvwVq7B&8*DO{p!#|F6T**%^O{CN5KcB}tQe$G) z!64onMoChWL2LM)+tzDfA=Ml8^z`7U!$vDFWoBkxzxDgCKJyPEj9TYO>~MSM?L%4h zRH&{9eLJWMMOMyFGK{z+#*ED-%{BWYbbKlUzf8z+ zR420y1jFE(6T>BmALdJ^7Hx*~KDHV;X=daH^dvuKh9y}q#JTw{3)xQHw))ycE z#CZGtVShOkd6i0R8Cst2?CiWH!G0UuP!?3>ED{P2ldcWNdX*}@xb6W)U?LC?j>;ZI zcB?>%!?D>2El`<^J2^=M&BF6-OZ=EKZ#>W9`8NbagihDwz~j`5b3cYR8O*p=%IPGM zh6Pv%eIAK(Q!tJ)ZUu1BK5}<>TYI~fx3@RQsd{^w!MIjiyD#FQF(IH#xRYI8pmeBs zlU)@o>X}S@fTw^gX{?D2yy-)l48+2b(C{ zeFN+2>a5vm;3YJ%yf6B~(j47KeoxF8@7;mN<73I2NF=&xRzgFb;Ot4~*V^=yMb)-3;~j};u%I2;?Pl{_t7d*`lj z92OlDvlpok#6ec%l*6G9qTYDNzlNr^$u3y>#jPkdISTQ<)_0A`D0{6awK!RBYTioDn z(fF!}Ef$=x&3U@4&{*(PnnkP1DJVEt>3sD(jrJ;f;KQn~2@MbZD&y>AVw+bHd)u+k z>S)tWo+J|R4*f&%WGRCTVBk?nZdV06G$}0$R`4{Y(1AG}ZW%E#F#$*Y)7RJcfVO|B z*XWKgiOBsk%4&Pj>LyD5i|}^SC@d22!=wKE-Y_M8_%JZ9OmOyPvKNmElum`jPo5m> ztEEDb#U4EB^>w+og+dX;BOqBXBle0hVNPc9DYbFF^tsr_R63L7%#xruqpv4sk@~u% z1?A_x`V|+RS+j-B+2z?l02hZ+H859GY0Uo!KmAeeRIIBdI*uN4?3e{y>*CNE$C998 zn~YWld3@H9$o**Fl@j+mCX!tah6JeoUUK~Lc@4;aJn%{&A7hdg4`_Te5r);*meOzd zSbbu0luS4ZAPIQ?n7$6E&!eL4@4we@(VtS^B!^ zeBf8iu_D_8D_>70sNO`*ESVv?gm!cCwxPSG4e=UtZ5dS2yEP*Q}yDe`I}4x9EJ5Q>geb=Ir;6|(g@|j_heg# z)PI*wI+k=Py8dubNzp`3-2m;<`1{JUo9~M@seE3^v=_IBlNB2X0Vx+W3$rTq71dL_ zit~>b6DsA*D94iKPmBL1no0v)TvWi-Wir_(CZ+8q4Y-MzB5Dzw?Z0w;H+ey-?D(yW zZwMUEfw3?%7FS10ZK8C<6&e+6z|^s!ud8NO!n8RyGr(NN-fkhV_TOO=Iv5!=F&wkFEPNc O0Y)VFx!1UzO8XDtejNY+ From ec400b1fdb4d3035582d8fc0fda14fb37483dd71 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Tue, 9 Dec 2025 18:54:11 -0500 Subject: [PATCH 12/26] Fixes some issues with the shadow knife on drop --- .../story_content/common_story/code/spells/shadow_knife.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 index 22ab991a0930..d06617b10cc6 100644 --- a/maplestation_modules/story_content/common_story/code/spells/shadow_knife.dm +++ b/maplestation_modules/story_content/common_story/code/spells/shadow_knife.dm @@ -19,8 +19,8 @@ /obj/item/knife/combat/ice/shadow/Initialize(mapload) . = ..() expire_time = world.time + 40 SECONDS - RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + RegisterSignal(src, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) // Expires on drop unlike the regular knife. -/obj/item/knife/combat/ice/shadow/on_drop(atom/source) +/obj/item/knife/combat/ice/shadow/proc/on_drop(atom/source) expire() From 56f299395e82b58262e52f3b6c3bb1e14431be45 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 14 Dec 2025 13:46:22 -0500 Subject: [PATCH 13/26] Removes the non-functional summoned star gazer. --- maplestation.dme | 1 - .../code/mob/basic/summoned_star_gazer.dm | 14 -------------- 2 files changed, 15 deletions(-) delete mode 100644 maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm diff --git a/maplestation.dme b/maplestation.dme index 77b59ac0f715..2180166386f0 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6834,7 +6834,6 @@ #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\mob\basic\summoned_star_gazer.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" diff --git a/maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm b/maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm deleted file mode 100644 index e51654a6af74..000000000000 --- a/maplestation_modules/story_content/common_story/code/mob/basic/summoned_star_gazer.dm +++ /dev/null @@ -1,14 +0,0 @@ -/// Weaker version of the star gazer, meant to be fought instead of being an invincible gigafighter -/mob/living/basic/heretic_summon/star_gazer/summoned - maxHealth = 750 - health = 750 - obj_damage = 60 - melee_damage_lower = 25 - melee_damage_upper = 25 - damage_coeff = list(BRUTE = 1, BURN = 0.8, TOX = 0, STAMINA = 0, OXY = 0) - -/mob/living/basic/heretic_summon/star_gazer/summoned/Initialize(mapload) - . = ..() - src.RemoveElement(/datum/element/death_explosion) // slightly hacky way of disabling the death explosion without editing the base star gazer - src.RemoveElement(/datum/element/effect_trail) - RemoveComponentSource(REF(src), /datum/component/regenerator) From cbeec33a86f90e04b4126a472ab8ca599dda7c28 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 14 Dec 2025 17:16:08 -0500 Subject: [PATCH 14/26] Punts everything into new directories --- maplestation.dme | 24 ++++++++++ .../README.md | 0 .../code/rapid_statuses/lunar_judge.dm | 2 +- .../code/rapid_statuses/rabid_shadowfiend.dm | 0 .../code/smites/death_from_beyond.dm | 0 .../code/spells/shadow_knife.dm | 0 .../code/spells/shadow_steel.dm | 0 .../code/story_lazy_template.dm | 0 .../code/story_rapid_status.dm | 0 .../code/story_rapid_status_datum.dm | 0 .../icons/literally_just_the_moon.dmi | Bin .../__crit_equipment/code/areas.dm | 25 ++++++++++ .../code/heat_blade.dm | 0 .../code/library/invitation.dm | 45 ++++++++++++++++++ .../code/library/lazy_templates.dm | 0 .../code/library/weapons.dm | 6 +-- .../code/pendant.dm | 4 +- .../code/rapid_statuses/_cosmos.dm | 0 .../code/rapid_statuses/herald_of_cosmos.dm | 0 .../code/rapid_statuses/prince_of_cosmos.dm | 0 .../code/rapid_statuses/princess_of_cosmos.dm | 0 .../code/rapid_statuses/silvered_huntress.dm | 0 .../code/tevetia_spells/dark_smoke.dm | 0 .../__crit_equipment/icons/areas_library.dmi | Bin 0 -> 1499 bytes .../icons/greenleaf_amulet.dmi | Bin .../icons/greenleaf_amulet_worn.dmi | Bin .../icons/kanabo.dmi | Bin .../icons/kanabo_lefthand.dmi | Bin .../icons/kanabo_righthand.dmi | Bin .../__crit_equipment/icons/library_card.dmi | Bin 0 -> 412 bytes 30 files changed, 100 insertions(+), 6 deletions(-) rename maplestation_modules/story_content/{common_story => __common_story}/README.md (100%) rename maplestation_modules/story_content/{common_story => __common_story}/code/rapid_statuses/lunar_judge.dm (94%) rename maplestation_modules/story_content/{common_story => __common_story}/code/rapid_statuses/rabid_shadowfiend.dm (100%) rename maplestation_modules/story_content/{common_story => __common_story}/code/smites/death_from_beyond.dm (100%) rename maplestation_modules/story_content/{common_story => __common_story}/code/spells/shadow_knife.dm (100%) rename maplestation_modules/story_content/{common_story => __common_story}/code/spells/shadow_steel.dm (100%) rename maplestation_modules/story_content/{common_story => __common_story}/code/story_lazy_template.dm (100%) rename maplestation_modules/story_content/{common_story => __common_story}/code/story_rapid_status.dm (100%) rename maplestation_modules/story_content/{common_story => __common_story}/code/story_rapid_status_datum.dm (100%) rename maplestation_modules/story_content/{common_story => __common_story}/icons/literally_just_the_moon.dmi (100%) create mode 100644 maplestation_modules/story_content/__crit_equipment/code/areas.dm rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/code/heat_blade.dm (100%) create mode 100644 maplestation_modules/story_content/__crit_equipment/code/library/invitation.dm rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/code/library/lazy_templates.dm (100%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/code/library/weapons.dm (69%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/code/pendant.dm (79%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/code/rapid_statuses/_cosmos.dm (100%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/code/rapid_statuses/herald_of_cosmos.dm (100%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/code/rapid_statuses/prince_of_cosmos.dm (100%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/code/rapid_statuses/princess_of_cosmos.dm (100%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/code/rapid_statuses/silvered_huntress.dm (100%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/code/tevetia_spells/dark_smoke.dm (100%) create mode 100644 maplestation_modules/story_content/__crit_equipment/icons/areas_library.dmi rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/icons/greenleaf_amulet.dmi (100%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/icons/greenleaf_amulet_worn.dmi (100%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/icons/kanabo.dmi (100%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/icons/kanabo_lefthand.dmi (100%) rename maplestation_modules/story_content/{crit_equipment => __crit_equipment}/icons/kanabo_righthand.dmi (100%) create mode 100644 maplestation_modules/story_content/__crit_equipment/icons/library_card.dmi diff --git a/maplestation.dme b/maplestation.dme index 2180166386f0..cd2b7fe32952 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6830,6 +6830,7 @@ ======= ======= #include "maplestation_modules\story_content\bell_equipment\code\bellclothing.dm" +<<<<<<< HEAD >>>>>>> 863ff942946 (Adds in a kanabo.) #include "maplestation_modules\story_content\common_story\code\story_lazy_template.dm" #include "maplestation_modules\story_content\common_story\code\story_rapid_status.dm" @@ -6859,6 +6860,29 @@ >>>>>>> 1b4512d6e3d (Adds in a lot more rapid statuses and spells for them.) #include "maplestation_modules\story_content\crit_equipment\code\tevetia_spells\dark_smoke.dm" #include "maplestation_modules\story_content\crit_equipment\code\pendant.dm" +======= +#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\enma_equipment\code\enmaclothes.dm" +>>>>>>> 12d2e16820b (Punts everything into new directories) #include "maplestation_modules\story_content\eveleen_equipment\code\clothing.dm" #include "maplestation_modules\story_content\grey_equipment\code\greyclothing.dm" #include "maplestation_modules\story_content\isaac_equipment\code\isaacclothing.dm" diff --git a/maplestation_modules/story_content/common_story/README.md b/maplestation_modules/story_content/__common_story/README.md similarity index 100% rename from maplestation_modules/story_content/common_story/README.md rename to maplestation_modules/story_content/__common_story/README.md 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 similarity index 94% rename from maplestation_modules/story_content/common_story/code/rapid_statuses/lunar_judge.dm rename to maplestation_modules/story_content/__common_story/code/rapid_statuses/lunar_judge.dm index d5eb9b273faf..740766086aa8 100644 --- 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 @@ -27,7 +27,7 @@ /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 = 'maplestation_modules/story_content/__common_story/icons/literally_just_the_moon.dmi' icon_state = "moon" inhand_icon_state = "minimeteor" w_class = WEIGHT_CLASS_SMALL 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 similarity index 100% rename from maplestation_modules/story_content/common_story/code/rapid_statuses/rabid_shadowfiend.dm rename to maplestation_modules/story_content/__common_story/code/rapid_statuses/rabid_shadowfiend.dm 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 similarity index 100% rename from maplestation_modules/story_content/common_story/code/smites/death_from_beyond.dm rename to maplestation_modules/story_content/__common_story/code/smites/death_from_beyond.dm 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 similarity index 100% rename from maplestation_modules/story_content/common_story/code/spells/shadow_knife.dm rename to maplestation_modules/story_content/__common_story/code/spells/shadow_knife.dm 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 similarity index 100% rename from maplestation_modules/story_content/common_story/code/spells/shadow_steel.dm rename to maplestation_modules/story_content/__common_story/code/spells/shadow_steel.dm 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 similarity index 100% rename from maplestation_modules/story_content/common_story/code/story_lazy_template.dm rename to maplestation_modules/story_content/__common_story/code/story_lazy_template.dm 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 similarity index 100% rename from maplestation_modules/story_content/common_story/code/story_rapid_status.dm rename to maplestation_modules/story_content/__common_story/code/story_rapid_status.dm 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 similarity index 100% rename from maplestation_modules/story_content/common_story/code/story_rapid_status_datum.dm rename to maplestation_modules/story_content/__common_story/code/story_rapid_status_datum.dm 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 similarity index 100% rename from maplestation_modules/story_content/common_story/icons/literally_just_the_moon.dmi rename to maplestation_modules/story_content/__common_story/icons/literally_just_the_moon.dmi 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 similarity index 100% rename from maplestation_modules/story_content/crit_equipment/code/heat_blade.dm rename to maplestation_modules/story_content/__crit_equipment/code/heat_blade.dm 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 similarity index 100% rename from maplestation_modules/story_content/crit_equipment/code/library/lazy_templates.dm rename to maplestation_modules/story_content/__crit_equipment/code/library/lazy_templates.dm diff --git a/maplestation_modules/story_content/crit_equipment/code/library/weapons.dm b/maplestation_modules/story_content/__crit_equipment/code/library/weapons.dm similarity index 69% rename from maplestation_modules/story_content/crit_equipment/code/library/weapons.dm rename to maplestation_modules/story_content/__crit_equipment/code/library/weapons.dm index 335e6528e4f9..fe4e2408c6bf 100644 --- a/maplestation_modules/story_content/crit_equipment/code/library/weapons.dm +++ b/maplestation_modules/story_content/__crit_equipment/code/library/weapons.dm @@ -1,11 +1,11 @@ /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 = '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' + 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 diff --git a/maplestation_modules/story_content/crit_equipment/code/pendant.dm b/maplestation_modules/story_content/__crit_equipment/code/pendant.dm similarity index 79% rename from maplestation_modules/story_content/crit_equipment/code/pendant.dm rename to maplestation_modules/story_content/__crit_equipment/code/pendant.dm index 82062c7362ea..563571d11709 100644 --- a/maplestation_modules/story_content/crit_equipment/code/pendant.dm +++ b/maplestation_modules/story_content/__crit_equipment/code/pendant.dm @@ -1,9 +1,9 @@ /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 = '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 = '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 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 similarity index 100% rename from maplestation_modules/story_content/crit_equipment/code/rapid_statuses/_cosmos.dm rename to maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/_cosmos.dm 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 similarity index 100% rename from maplestation_modules/story_content/crit_equipment/code/rapid_statuses/herald_of_cosmos.dm rename to maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/herald_of_cosmos.dm 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 similarity index 100% rename from maplestation_modules/story_content/crit_equipment/code/rapid_statuses/prince_of_cosmos.dm rename to maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/prince_of_cosmos.dm 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 similarity index 100% rename from maplestation_modules/story_content/crit_equipment/code/rapid_statuses/princess_of_cosmos.dm rename to maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/princess_of_cosmos.dm 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 similarity index 100% rename from maplestation_modules/story_content/crit_equipment/code/rapid_statuses/silvered_huntress.dm rename to maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/silvered_huntress.dm 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 similarity index 100% rename from maplestation_modules/story_content/crit_equipment/code/tevetia_spells/dark_smoke.dm rename to maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_smoke.dm 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 0000000000000000000000000000000000000000..fef97e72dad5927c2f87f41a5184bcd9ae203a42 GIT binary patch literal 1499 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoE2}~xN?cNllZ!G7N;32F7#J$% z^qxD*)odWZ@}T&WNcTPO|Lb;&cz;~5Ug2U+N#^c}zN@~xt={k@V(-}l#|iAVqo)gU(2?n&cnO&q#6tJO#V4Z%cd%KCOlX$Rs8o6)&Ezz z-^--MmF|rwJKG$!@l)K@*o6BQGMCLXZ#EaktG3RaU*-9Bj9?_pc?z24jKPu)O4&BN7{DD$T`)LL7 zWaB7K&jSkA7MIVIPjgt!{)l(=O<#r&>@pJ{e$Q^&uD*QReBnK|Ra;^|9Nt{W(7=-K zFIi{5KJWYCpL$2G7pOBN*mCZ+kWUb1Vz@SO!{pD5985*$)_<+5?K%JOQ&G?9rB>YM z)Dq2~Gb@0^HJ7&Ea{OAT>91)U@bsy~^y$g3>UuVN+_?CY;Sh($aozUJchlD$oZ)+D z-8pszjsxe8*~T!H*7qj@mE8Qv(B-*9jsf%Iz2&n4Ys6GW<}D zz3|xMuj{$(d)&FlrLiOW6*drb)XwMlVlbMx!RMeh=fwU#TaQfOVMHuZ|NCi4lEIf9=z zHfK9&v_~thQb;+&YkBF2)uVzMjkM%zZqnf-a-X8#@E9hx#(0v5JuO+UBt)~qdiHdu2m;(8TXH*HE^gk5EBdb-fIV8`@zSw^Mx z^F1p>()BgpTL^7aOt>okV)w)itc;6cy)du%y97vFb=>Nj|^=ols){ua-$&q&Ej&1J4=pn6iT z%G+&D7nTdg@Y#G1I+PLgn(yu7@621?Ge=wwTk__Gs@t1e`&jPqZE`iOYFB?K>2|01 zw{EoEt^8XCv8-PuHYWd0U2^qvgQ>BfFxTwK1-5riUwCJ@$XrDy?|++$)^*|c!I4*v zd|moZI`Dwths-lB$|@7~mTVH9wQ9xGw>{R*vFB2Kf}cv{a6Fn6{JQofE6Zx7hjC30 zULAQl>$h&i$G(Otz71i0qCH|E(h;nQ?FD>Uy*+UOi(P*AF$gS@J3vtDkyUFf!F9BjU!EzVJUb$=@>bCpX>=GtVkZf3)puNmr2 zEA8Gzb^5%E*uC^s0_TLhZ6>Q)LqjvG_9wRN_*0d%WT}PnK7McjDjbkR3)$rMEmP|6 zu~jI!VGVJhhPCX5@2`CEZjffYxANt5Mr)=WbL6$Yu1g4w`cZzUATEIS{FM*YN8iNz z9$7wZ*|Ph}5lmrEkH^b?mD!+VFZcM9SLd()4TtTf{>k#>KYlyF%l*NB{(z_Zvo9ak z{G#@@E!Tk0d!JMQvg8b*k%9#0C0L#Sad{Xb7OL8aCB*J zZU6vyoKseCa&`CgQ*iP10J%v-K~yM_b<9AP$WnpJm&;R+G@)Oz-kK{0!&+ycsDCSCd|ajFPT6LR)BL; z4zvR2hQJk;p5I5BxWYp7jKiHP8jwi`GU)+H4@eH+@4Nv}t1!$NPtZdE0000 Date: Sun, 14 Dec 2025 17:18:39 -0500 Subject: [PATCH 15/26] i did a stupid --- maplestation.dme | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/maplestation.dme b/maplestation.dme index cd2b7fe32952..523d6a50df8f 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6809,6 +6809,7 @@ #include "maplestation_modules\code\modules\wiremod\shells.dm" #ifdef MAPLESTATION_STORY_CONTENT <<<<<<< HEAD +<<<<<<< HEAD ======= #include "maplestation_modules\story_content\albert_equipment\code\albertclothing.dm" #include "maplestation_modules\story_content\albert_equipment\code\albertitem.dm" @@ -6861,6 +6862,8 @@ #include "maplestation_modules\story_content\crit_equipment\code\tevetia_spells\dark_smoke.dm" #include "maplestation_modules\story_content\crit_equipment\code\pendant.dm" ======= +======= +>>>>>>> 184dff482a9 (i did a stupid) #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" @@ -6881,6 +6884,12 @@ #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\melee\void_blade.dm" +#include "maplestation_modules\story_content\bell_equipment\code\bellclothing.dm" #include "maplestation_modules\story_content\enma_equipment\code\enmaclothes.dm" >>>>>>> 12d2e16820b (Punts everything into new directories) #include "maplestation_modules\story_content\eveleen_equipment\code\clothing.dm" From b859da4b7817e97bf86bb0893b14bab4967477f0 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Mon, 16 Feb 2026 01:30:07 -0500 Subject: [PATCH 16/26] Spirit Force --- maplestation.dme | 1 + .../__crit_equipment/code/spells.dm | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 maplestation_modules/story_content/__crit_equipment/code/spells.dm diff --git a/maplestation.dme b/maplestation.dme index 523d6a50df8f..2a5d7289bd16 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6875,6 +6875,7 @@ #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\spells.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" diff --git a/maplestation_modules/story_content/__crit_equipment/code/spells.dm b/maplestation_modules/story_content/__crit_equipment/code/spells.dm new file mode 100644 index 000000000000..20af1ef57490 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/spells.dm @@ -0,0 +1,17 @@ +/datum/action/cooldown/spell/spirit_force + name = "Spirit Force - A Vengeful Bloom" + desc = "Utilize the latent wrath within your spirit. It will give you the strength to forge ahead." + button_icon_state = "charge" + + sound = 'sound/magic/charge.ogg' + + school = SCHOOL_HOLY + cooldown_time = 60 SECONDS + + invocation_type = INVOCATION_NONE + spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC + +/datum/action/cooldown/spell/spirit_force/cast(mob/living/cast_on) + . = ..() + + cast_on.add_filter("spirit_force", 2, list("type" = "drop_shadow", "x" = 0, "y" = 1, "color" = COLOR_DARK_RED, "size" = 2)) From d32050042093020b39082b6f4b02d9201f031d73 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Tue, 24 Feb 2026 16:46:34 -0500 Subject: [PATCH 17/26] Dark forging, spirit force is more built out --- maplestation.dme | 1 + .../__crit_equipment/code/spells.dm | 60 +++++++++- .../code/tevetia_spells/dark_forging.dm | 113 ++++++++++++++++++ 3 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_forging.dm diff --git a/maplestation.dme b/maplestation.dme index 2a5d7289bd16..38eed61361ff 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6884,6 +6884,7 @@ #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_forging.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" diff --git a/maplestation_modules/story_content/__crit_equipment/code/spells.dm b/maplestation_modules/story_content/__crit_equipment/code/spells.dm index 20af1ef57490..ae647d601f23 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/spells.dm +++ b/maplestation_modules/story_content/__crit_equipment/code/spells.dm @@ -1,4 +1,13 @@ -/datum/action/cooldown/spell/spirit_force +// TODO LIST: +// Add "burning out" effect (consciousness modifier most likely, heart issues, literally burning up) +// Add recovery from burning out effect (healing over time? healing from sleeping state?) +// Add enhanced strength +// Add lifesteal +// Add "overdrive" secondary mode (right click on spell icon while already active) +// Fix up mood damage calcs +// Testing + +/datum/action/cooldown/spell/spirit_force_camellia name = "Spirit Force - A Vengeful Bloom" desc = "Utilize the latent wrath within your spirit. It will give you the strength to forge ahead." button_icon_state = "charge" @@ -11,7 +20,52 @@ invocation_type = INVOCATION_NONE spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC -/datum/action/cooldown/spell/spirit_force/cast(mob/living/cast_on) +/datum/action/cooldown/spell/spirit_force_camellia/cast(mob/living/cast_on) . = ..() - cast_on.add_filter("spirit_force", 2, list("type" = "drop_shadow", "x" = 0, "y" = 1, "color" = COLOR_DARK_RED, "size" = 2)) + if(cast_on.mob_mood.sanity_level <= SANITY_UNSTABLE) + return SPELL_CANCEL_CAST + + cast_on.apply_status_effect(/datum/status_effect/spirit_force_camellia) + +/datum/mood_event/spirit_force_camellia + description = "My spirit is on fire." + mood_change = 4 + +/datum/mood_event/spirit_force_camellia/add_effects() + RegisterSignal(owner, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(update_mood)) + +/datum/mood_event/spirit_force_camellia/remove_effects() + UnregisterSignal(owner, COMSIG_MOB_AFTER_APPLY_DAMAGE) + +/datum/mood_event/spirit_force_camellia/proc/update_mood(atom/source, damage) + var/old_mood = mood_change + mood_change -= damage * 0.1 //add a max mood change malus and make it not count negative damage + if(old_mood != mood_change) + owner.mob_mood.update_mood() + +/datum/status_effect/spirit_force_camellia + id = "spirit_force_camellia" + duration = -1 + alert_type = /atom/movable/screen/alert/status_effect/spirit_force_camellia + +/datum/status_effect/spirit_force_camellia/on_apply() + owner.add_mood_event("spirit_force_camellia", /datum/mood_event/spirit_force_camellia) + owner.add_filter("spirit_force", 2, list("type" = "drop_shadow", "x" = 0, "y" = 1, "color" = COLOR_DARK_RED, "size" = 2)) + owner.add_consciousness_modifier("spirit_force", 0) + return ..() + +/datum/status_effect/spirit_force_camellia/on_remove() + owner.clear_mood_event("spirit_force_camellia") + owner.remove_filter("spirit_force") + +/datum/status_effect/spirit_force_camellia/tick(seconds_between_ticks) + . = ..() + + if(owner.mob_mood.sanity_level <= SANITY_UNSTABLE) + qdel(src) + +/atom/movable/screen/alert/status_effect/spirit_force_camellia + name = "Spirit Force" + desc = "You have enhanced power and lifesteal, but this is taxing on your soul. Damage also applies to your mood and consciousness. Low sanity will turn off this spell." + icon_state = "lightningorb" diff --git a/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_forging.dm b/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_forging.dm new file mode 100644 index 000000000000..fa61d51c842e --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_forging.dm @@ -0,0 +1,113 @@ +/datum/action/cooldown/spell/conjure_item/dark_forging + button_icon_state = "shapeshift" + cooldown_time = 20 SECONDS + + requires_hands = TRUE + + /// All the weapons we've previously casted, used to track if we can use Piercer + var/list/casted_weapons = list() + +/datum/action/cooldown/spell/dark_forging/before_cast(mob/living/cast_on) + . = ..() + if(. & SPELL_CANCEL_CAST) + return + + var/list/summonable_weapons = list() + for(var/atom/path as anything in subtypesof(/obj/item/melee/dark_forged)) + if(path == /obj/item/melee/dark_forged/piercer) + continue + var/path_name = initial(path.name) + summonable_weapon_types[path_name] = path + summonable_weapons[path_name] = image(icon = initial(path.icon), icon_state = initial(path.icon_state)) + + var/picked_item = show_radial_menu( + cast_on, + cast_on, + summonable_weapons, + custom_check = FALSE, + radius = 38, + ) + + item_type = summonable_weapon_types[picked_item] + +/datum/action/cooldown/spell/dark_forging/post_created(atom/cast_on, atom/created) + if(!casted_weapons.Find(created.name) && created != /obj/item/melee/dark_forged/piercer) + casted_weapons += created.name + if(created == /obj/item/melee/dark_forged/piercer) + casted_weapons.Cut() + +/obj/item/melee/dark_forged + name = "dark forged weapon" + desc = "A weapon shaped from darkness. This description is also a placeholder. god dammit" + 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' + w_class = WEIGHT_CLASS_BULKY + attack_verb_continuous = list("slashes", "cuts") + attack_verb_simple = list("slash", "cut") + block_sound = 'sound/weapons/parry.ogg' + hitsound = 'sound/weapons/rapierhit.ogg' + 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/melee/dark_forged/lance + name = "dark forged lance" + desc = "A lance formed by darkness. It can be used to lunge at enemies or be thrown for massive damage." + sharpness = SHARP_POINTY + force = 25 + throwforce = 50 + +/obj/item/melee/dark_forged/dagger + name = "dark forged dagger" + desc = "A knife made from the shadows by a masterful caster. It can be used to rapidly inflict wounds on a target." + sharpness = SHARP_EDGED + force = 20 + wound_bonus = 50 + bare_wound_bonus = 25 + +/obj/item/melee/dark_forged/halberd + name = "dark forged halberd" + desc = "A halberd made from darkness." + force = 25 + +/obj/item/melee/dark_forged/hammer + name = "dark forged hammer" + desc = "A sledgehammer made out of the dark, with a surprising amount of weight to it. It can easily destroy objects or break people's guard." + force = 20 + demolition_mod = 2 + +/obj/item/melee/dark_forged/shield + name = "dark forged shield" + desc = "A shield of shadows. It seems to shape and morph to protect you from attacks you might not have seen coming." + force = 10 + block_chance = 60 + +/obj/item/melee/dark_forged/piercer + name = "dark forged blade" + desc = "A masterfully shaped blade, yet made out of nothing but disposable shadow. Takes a greater effort to manifest, but is much more powerful." + sharpness = SHARP_EDGED + force = 40 + armour_penetration = 75 + wound_bonus = 50 + bare_wound_bonus = 25 + +/obj/item/melee/dark_forged/piercer/attack_secondary(mob/living/victim, mob/living/user, params) + . = ..() + + if(!do_after(user, 3 SECONDS, target = victim)) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + + victim.apply_damage(damage = src.force * 2, def_zone = BODY_ZONE_CHEST, wound_bonus = src.wound_bonus, bare_wound_bonus = src.bare_wound_bonus, sharpness = src.sharpness, attacking_item = src) + if(iscarbon(victim)) + var/mob/living/carbon/carbon_victim = victim + carbon_victim.adjustOrganLoss(ORGAN_SLOT_HEART, 100) //yes, surviving this with a cyber heart is intentional + + user.do_attack_animation(victim, used_item = src) + victim.do_splatter_effect(get_dir(user, victim)) + + playsound(source = src, soundin = src.hitsound, vol = src.get_clamped_volume(), vary = TRUE) + + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN From c01064f8a0745b2c2d437b613df7141bca2ac63a Mon Sep 17 00:00:00 2001 From: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Date: Tue, 11 Nov 2025 21:27:24 -0500 Subject: [PATCH 18/26] Adds self-message to clown pockets spell, calls post_created() (#93885) ## About The Pull Request Adds self-message to the clown pockets spell that lets you pull out clown items from nowhere. Also, calls `post_created()` in `/datum/action/cooldown/spell/conjure_item`, which it wasn't before. ## Why It's Good For The Game I don't like seeing my own name in the chatbox from my own actions. `post_created()` currently is useless. It's still useless, cause it's only for this spell, but its a lesser degree of uselessness. ## Changelog :cl: spellcheck: Adds self-message to clown pockets spell /:cl: --- .../antagonists/wizard/equipment/enchanted_clown_suit.dm | 8 +++++--- .../spells/spell_types/conjure_item/_conjure_item.dm | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/code/modules/antagonists/wizard/equipment/enchanted_clown_suit.dm b/code/modules/antagonists/wizard/equipment/enchanted_clown_suit.dm index 623971276937..c0ae9379f1b3 100644 --- a/code/modules/antagonists/wizard/equipment/enchanted_clown_suit.dm +++ b/code/modules/antagonists/wizard/equipment/enchanted_clown_suit.dm @@ -62,7 +62,7 @@ return ..() /datum/action/cooldown/spell/conjure_item/clown_pockets/post_created(atom/cast_on, atom/created) - cast_on.visible_message(span_notice("[cast_on] pulls out [created]!")) + cast_on.visible_message(span_notice("[cast_on] pulls out [created]!"), span_notice("You pull out [created]!")) /datum/action/cooldown/spell/conjure_item/clown_pockets/can_cast_spell(feedback = TRUE) . = ..() @@ -76,7 +76,8 @@ /// Prints a funny message, exists so I can override it to print a different message /datum/action/cooldown/spell/conjure_item/clown_pockets/proc/cast_message(mob/cast_on) cast_on.visible_message(span_notice("[cast_on] reaches far deeper into [cast_on.p_their()] pockets than you think \ - should be possible and starts rummaging around for something.")) + should be possible and starts rummaging around for something."), span_notice("You reach further down into your \ + pockets than you ever have before and feel around for something.")) /// Longer cooldown variant which is attached to the enchanted clown suit /datum/action/cooldown/spell/conjure_item/clown_pockets/enchantment @@ -84,7 +85,8 @@ cooldown_time = 60 SECONDS /datum/action/cooldown/spell/conjure_item/clown_pockets/enchantment/cast_message(mob/cast_on) - cast_on.visible_message(span_notice("[cast_on] starts rummaging around in [cast_on.p_their()] comically large pants.")) + cast_on.visible_message(span_notice("[cast_on] starts rummaging around in [cast_on.p_their()] comically large pants."), span_notice("You \ + start rummaging around in your comically large pants.")) /// Enchanted clown suit /obj/item/clothing/under/rank/civilian/clown/magic diff --git a/code/modules/spells/spell_types/conjure_item/_conjure_item.dm b/code/modules/spells/spell_types/conjure_item/_conjure_item.dm index 3bbdf25fa844..95616c54360a 100644 --- a/code/modules/spells/spell_types/conjure_item/_conjure_item.dm +++ b/code/modules/spells/spell_types/conjure_item/_conjure_item.dm @@ -72,6 +72,8 @@ if(istype(mob_caster)) mob_caster.put_in_hands(created, del_on_fail = delete_on_failure) + post_created(cast_on, created) + return ..() /// Instantiates the item we're conjuring and returns it. From 3e39a15e4852ec788c27cad72d0096bdc2825c6c Mon Sep 17 00:00:00 2001 From: Critawakets Date: Tue, 24 Feb 2026 17:32:49 -0500 Subject: [PATCH 19/26] Overall improvements --- .../code/rapid_statuses/silvered_huntress.dm | 1 + .../__crit_equipment/code/spells.dm | 16 ++++++++++++++-- .../code/tevetia_spells/dark_forging.dm | 9 ++++++--- 3 files changed, 21 insertions(+), 5 deletions(-) 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 index 8f54bb5315c4..36332bcf91f4 100644 --- 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 @@ -6,6 +6,7 @@ /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, + /datum/action/cooldown/spell/conjure_item/dark_forging, ) grant_spell_list(selected, spells_to_grant, TRUE) diff --git a/maplestation_modules/story_content/__crit_equipment/code/spells.dm b/maplestation_modules/story_content/__crit_equipment/code/spells.dm index ae647d601f23..84c3228787af 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/spells.dm +++ b/maplestation_modules/story_content/__crit_equipment/code/spells.dm @@ -23,10 +23,18 @@ /datum/action/cooldown/spell/spirit_force_camellia/cast(mob/living/cast_on) . = ..() - if(cast_on.mob_mood.sanity_level <= SANITY_UNSTABLE) + to_chat(cast_on, "cast start") + + if(cast_on.has_status_effect(/datum/status_effect/spirit_force_camellia)) + to_chat(cast_on, "cast DELET") + cast_on.remove_status_effect(/datum/status_effect/spirit_force_camellia) + + if(cast_on.mob_mood.sanity <= SANITY_UNSTABLE) + to_chat(cast_on, "cast cancel") return SPELL_CANCEL_CAST cast_on.apply_status_effect(/datum/status_effect/spirit_force_camellia) + to_chat(cast_on, "cast done") /datum/mood_event/spirit_force_camellia description = "My spirit is on fire." @@ -39,6 +47,7 @@ UnregisterSignal(owner, COMSIG_MOB_AFTER_APPLY_DAMAGE) /datum/mood_event/spirit_force_camellia/proc/update_mood(atom/source, damage) + to_chat(owner, "mood update") var/old_mood = mood_change mood_change -= damage * 0.1 //add a max mood change malus and make it not count negative damage if(old_mood != mood_change) @@ -50,19 +59,22 @@ alert_type = /atom/movable/screen/alert/status_effect/spirit_force_camellia /datum/status_effect/spirit_force_camellia/on_apply() + to_chat(owner, "status apply") owner.add_mood_event("spirit_force_camellia", /datum/mood_event/spirit_force_camellia) owner.add_filter("spirit_force", 2, list("type" = "drop_shadow", "x" = 0, "y" = 1, "color" = COLOR_DARK_RED, "size" = 2)) owner.add_consciousness_modifier("spirit_force", 0) return ..() /datum/status_effect/spirit_force_camellia/on_remove() + to_chat(owner, "status remove") owner.clear_mood_event("spirit_force_camellia") owner.remove_filter("spirit_force") /datum/status_effect/spirit_force_camellia/tick(seconds_between_ticks) . = ..() - if(owner.mob_mood.sanity_level <= SANITY_UNSTABLE) + if(owner.mob_mood.sanity <= SANITY_UNSTABLE) + to_chat(owner, "status DELETE") qdel(src) /atom/movable/screen/alert/status_effect/spirit_force_camellia diff --git a/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_forging.dm b/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_forging.dm index fa61d51c842e..093675a07f78 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_forging.dm +++ b/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_forging.dm @@ -1,4 +1,5 @@ /datum/action/cooldown/spell/conjure_item/dark_forging + name = "Dark Forging" button_icon_state = "shapeshift" cooldown_time = 20 SECONDS @@ -7,14 +8,15 @@ /// All the weapons we've previously casted, used to track if we can use Piercer var/list/casted_weapons = list() -/datum/action/cooldown/spell/dark_forging/before_cast(mob/living/cast_on) +/datum/action/cooldown/spell/conjure_item/dark_forging/before_cast(mob/living/cast_on) . = ..() if(. & SPELL_CANCEL_CAST) return var/list/summonable_weapons = list() + var/list/summonable_weapon_types = list() for(var/atom/path as anything in subtypesof(/obj/item/melee/dark_forged)) - if(path == /obj/item/melee/dark_forged/piercer) + if(path == /obj/item/melee/dark_forged/piercer && (length(casted_weapons) != (length(subtypesof(/obj/item/melee/dark_forged)) - 1))) continue var/path_name = initial(path.name) summonable_weapon_types[path_name] = path @@ -30,7 +32,7 @@ item_type = summonable_weapon_types[picked_item] -/datum/action/cooldown/spell/dark_forging/post_created(atom/cast_on, atom/created) +/datum/action/cooldown/spell/conjure_item/dark_forging/post_created(atom/cast_on, atom/created) if(!casted_weapons.Find(created.name) && created != /obj/item/melee/dark_forged/piercer) casted_weapons += created.name if(created == /obj/item/melee/dark_forged/piercer) @@ -52,6 +54,7 @@ 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' + color = "#000000" // for placeholder purposes /obj/item/melee/dark_forged/lance name = "dark forged lance" From 22bab1a5ed55cbdc298b2f9817e9e8612e201fca Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 7 Jun 2026 17:02:47 -0400 Subject: [PATCH 20/26] 516.1681 compatibility --- .../__common_story/code/smites/death_from_beyond.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 index 358841598f66..e5161032d791 100644 --- 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 @@ -33,18 +33,18 @@ var/picked_severity switch(strength) if("Low") - picked_severity = pick_weight(list( + picked_severity = pick_weight(alist( WOUND_SEVERITY_MODERATE = 2, WOUND_SEVERITY_SEVERE = 1, )) if("Moderate") - picked_severity = pick_weight(list( + picked_severity = pick_weight(alist( WOUND_SEVERITY_MODERATE = 1, WOUND_SEVERITY_SEVERE = 2, WOUND_SEVERITY_CRITICAL = 1, )) if("High") - picked_severity = pick_weight(list( + picked_severity = pick_weight(alist( WOUND_SEVERITY_MODERATE = 1, WOUND_SEVERITY_SEVERE = 1, WOUND_SEVERITY_CRITICAL = 3, From 5d707f9fd5bd908ee97c84cca50da5dabb30145e Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 5 Jul 2026 19:11:47 -0400 Subject: [PATCH 21/26] Fixes up all the new and amazing merge conflicts we just got --- maplestation.dme | 76 +----------------------------------------------- 1 file changed, 1 insertion(+), 75 deletions(-) diff --git a/maplestation.dme b/maplestation.dme index 38eed61361ff..aebb86fb9c73 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6808,62 +6808,6 @@ #include "maplestation_modules\code\modules\wiremod\component_printer.dm" #include "maplestation_modules\code\modules\wiremod\shells.dm" #ifdef MAPLESTATION_STORY_CONTENT -<<<<<<< HEAD -<<<<<<< HEAD -======= -#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" ->>>>>>> 0c17c97271b (Fixed up dme, story lazy templates are now more modular) -#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" -<<<<<<< HEAD -#include "maplestation_modules\story_content\misc\underwear.dm" -#include "maplestation_modules\story_content\common_story\code\story_rapid_status.dm" -<<<<<<< HEAD -<<<<<<< HEAD -======= -#include "maplestation_modules\story_content\common_story\code\mob\basic\summoned_star_gazer.dm" -#include "maplestation_modules\story_content\common_story\code\smites\death_from_beyond.dm" -======= -======= -#include "maplestation_modules\story_content\bell_equipment\code\bellclothing.dm" -<<<<<<< HEAD ->>>>>>> 863ff942946 (Adds in a kanabo.) -#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" -<<<<<<< HEAD ->>>>>>> 0c17c97271b (Fixed up dme, story lazy templates are now more modular) -======= -#include "maplestation_modules\story_content\crit_equipment\code\library\weapons.dm" -<<<<<<< HEAD ->>>>>>> 863ff942946 (Adds in a kanabo.) -======= -#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" ->>>>>>> 1b4512d6e3d (Adds in a lot more rapid statuses and spells for them.) -#include "maplestation_modules\story_content\crit_equipment\code\tevetia_spells\dark_smoke.dm" -#include "maplestation_modules\story_content\crit_equipment\code\pendant.dm" -======= -======= ->>>>>>> 184dff482a9 (i did a stupid) #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" @@ -6886,27 +6830,9 @@ #include "maplestation_modules\story_content\__crit_equipment\code\rapid_statuses\silvered_huntress.dm" #include "maplestation_modules\story_content\__crit_equipment\code\tevetia_spells\dark_forging.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\melee\void_blade.dm" -#include "maplestation_modules\story_content\bell_equipment\code\bellclothing.dm" -#include "maplestation_modules\story_content\enma_equipment\code\enmaclothes.dm" ->>>>>>> 12d2e16820b (Punts everything into new directories) -#include "maplestation_modules\story_content\eveleen_equipment\code\clothing.dm" -#include "maplestation_modules\story_content\grey_equipment\code\greyclothing.dm" -#include "maplestation_modules\story_content\isaac_equipment\code\isaacclothing.dm" -#include "maplestation_modules\story_content\jessie_equipment\code\jessie_clothing.dm" -#include "maplestation_modules\story_content\laurence_equipment\code\laurence_clothing.dm" -#include "maplestation_modules\story_content\lini_equipment\code\liniclothing.dm" -#include "maplestation_modules\story_content\localnode_equipment\localnode_core.dm" -#include "maplestation_modules\story_content\molly_equipment\code\mollyclothing.dm" -#include "maplestation_modules\story_content\noname_equipment\code\nonameclothing.dm" -#include "maplestation_modules\story_content\noname_equipment\code\nonameitems.dm" -#include "maplestation_modules\story_content\nurse_equipment\code\vinceclothing.dm" -#include "maplestation_modules\story_content\phoneguy_equipment\code\headphone.dm" ->>>>>>> 8a71979bb3b (Adds in Hunter's Smoke) +#include "maplestation_modules\story_content\misc\underwear.dm" #include "maplestation_modules\story_content\post_overlay\code\post_overlay.dm" #include "maplestation_modules\story_content\shiro_equipment\code\shiroclothing.dm" #include "maplestation_modules\story_content\story_posters\code\contraband.dm" From 25d85d4340756469531395c90cd99fbc56eebb3a Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 16 Aug 2026 00:19:22 -0400 Subject: [PATCH 22/26] Adds in the Ornate Psi-Blade --- maplestation.dme | 1 + .../__crit_equipment/code/olivia_blade.dm | 159 ++++++++++++++++++ .../code/rapid_statuses/prince_of_cosmos.dm | 2 + .../code/rapid_statuses/princess_of_cosmos.dm | 14 +- .../__crit_equipment/icons/olivia_blade.dmi | Bin 0 -> 1744 bytes .../icons/olivia_blade_lefthand.dmi | Bin 0 -> 442 bytes .../icons/olivia_blade_righthand.dmi | Bin 0 -> 441 bytes .../icons/olivia_blade_sheath.dmi | Bin 0 -> 494 bytes 8 files changed, 174 insertions(+), 2 deletions(-) create mode 100644 maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm create mode 100644 maplestation_modules/story_content/__crit_equipment/icons/olivia_blade.dmi create mode 100644 maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_lefthand.dmi create mode 100644 maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_righthand.dmi create mode 100644 maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_sheath.dmi diff --git a/maplestation.dme b/maplestation.dme index aebb86fb9c73..0cf4a44d22a7 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6818,6 +6818,7 @@ #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\olivia_blade.dm" #include "maplestation_modules\story_content\__crit_equipment\code\pendant.dm" #include "maplestation_modules\story_content\__crit_equipment\code\spells.dm" #include "maplestation_modules\story_content\__crit_equipment\code\library\invitation.dm" diff --git a/maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm b/maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm new file mode 100644 index 000000000000..a2c90033e914 --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm @@ -0,0 +1,159 @@ +/// Used for unlocking the second level of /obj/item/melee/olivia_blade 's psychic effects +#define TRAIT_SWORD_PSIONIC "sword_psionic" + +/obj/item/melee/olivia_blade + name = "ornate psi-blade" + desc = "An incredibly ornate psionic blade. It's somewhat heavy." + icon = 'maplestation_modules/story_content/__crit_equipment/icons/olivia_blade.dmi' + icon_state = "olivia_blade" + inhand_icon_state = "olivia_blade" + lefthand_file = 'maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_lefthand.dmi' + righthand_file = 'maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_righthand.dmi' + obj_flags = CONDUCTS_ELECTRICITY | UNIQUE_RENAME + force = 18 + throwforce = 15 + w_class = WEIGHT_CLASS_BULKY + block_chance = 25 + armour_penetration = 20 + sharpness = SHARP_EDGED + attack_verb_continuous = list("slashes", "cuts") + attack_verb_simple = list("slash", "cut") + block_sound = 'sound/weapons/parry.ogg' + hitsound = 'sound/weapons/bladeslice.ogg' + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) + bare_wound_bonus = 20 + 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/melee/olivia_blade/Initialize(mapload) + . = ..() + AddComponent(/datum/component/jousting) + AddComponent(/datum/component/butchering, \ + speed = 3 SECONDS, \ + effectiveness = 80, \ + ) + RegisterSignal(src, COMSIG_ITEM_EQUIPPED, PROC_REF(check_psychic_effects)) + RegisterSignal(src, COMSIG_ITEM_DROPPED, PROC_REF(remove_psychic_effects)) + +/// Checks psychic traits of the user, either no psychic, psychic or the special super psychic kind +/obj/item/melee/olivia_blade/proc/check_psychic_effects(obj/item/source, mob/user, slot) + if(HAS_TRAIT(user, TRAIT_FULL_PSIONIC)) + force = 25 + armour_penetration = 50 + wound_bonus = 20 + block_chance = 50 + if(HAS_TRAIT(user, TRAIT_SWORD_PSIONIC)) + // just overwrite everything from the previous one + force = 35 + armour_penetration = 0 + wound_bonus = 40 + block_chance = 60 + sharpness = NONE + attack_verb_continuous = list("beats", "smacks") + attack_verb_simple = list("beat", "smack") + hitsound = 'sound/weapons/resonator_blast.ogg' + update_appearance() + +/obj/item/melee/olivia_blade/proc/remove_psychic_effects(obj/item/source, mob/user) + force = initial(force) + armour_penetration = initial(armour_penetration) + wound_bonus = initial(wound_bonus) + sharpness = initial(sharpness) + attack_verb_continuous = initial(attack_verb_continuous) + attack_verb_simple = initial(attack_verb_simple) + hitsound = initial(hitsound) + +// THATS RIGHT ITS THE BASEBALL BAT KNOCKBACK +/obj/item/melee/olivia_blade/attack(mob/living/target, mob/living/user) + // we obtain the relative direction from the ~~bat~~ SWORD itself to the target + var/relative_direction = get_cardinal_dir(src, target) + var/atom/throw_target = get_edge_target_turf(target, relative_direction) + . = ..() + if(HAS_TRAIT(user, TRAIT_PACIFISM) || !HAS_TRAIT(user, TRAIT_SWORD_PSIONIC)) + return + else if(!QDELETED(target) && !target.anchored) + var/whack_speed = (prob(60) ? 1 : 3) + target.throw_at(throw_target, rand(1, 2), whack_speed, user, gentle = FALSE) // we are NOT gentle + +/obj/item/melee/olivia_blade/on_exit_storage(datum/storage/container) + playsound(container.parent, 'sound/items/unsheath.ogg', 25, TRUE) + +/obj/item/melee/olivia_blade/on_enter_storage(datum/storage/container) + playsound(container.parent, 'sound/items/sheath.ogg', 25, TRUE) + +/obj/item/melee/olivia_blade/update_overlays() + . = ..() + + if(force >= 25) + . += mutable_appearance(icon, "psi_effect", layer = layer + 0.1) + +// Broken admin verb - gotta figure out how to make it not appear on *everything* +//ADMIN_VERB_ONLY_CONTEXT_MENU(toggle_olivia_blade_sheath_lock, R_FUN, "Toggle Sheath Lock", obj/item/storage/belt/olivia_blade_sheath/target_sheath in world) +// target_sheath.toggle_sheath_lock() + +/obj/item/storage/belt/olivia_blade_sheath + name = "ornate psiblade sheath" + desc = "An ornate sheath designed to hold a psionic blade. It looks heavy enough to bludgeon with." + force = 18 + block_chance = 30 + icon = 'maplestation_modules/story_content/__crit_equipment/icons/olivia_blade.dmi' + worn_icon = 'maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_sheath.dmi' + icon_state = "sheath" + worn_icon_state = "sheath" + w_class = WEIGHT_CLASS_BULKY + interaction_flags_click = parent_type::interaction_flags_click | NEED_DEXTERITY | NEED_HANDS + +/obj/item/storage/belt/olivia_blade_sheath/Initialize(mapload) + . = ..() + AddElement(/datum/element/update_icon_updates_onmob) + + atom_storage.max_slots = 1 + atom_storage.rustle_sound = FALSE + atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY + atom_storage.set_holdable(/obj/item/melee/olivia_blade) + atom_storage.click_alt_open = FALSE + atom_storage.locked = STORAGE_FULLY_LOCKED + +/obj/item/storage/belt/olivia_blade_sheath/examine(mob/user) + . = ..() + if(length(contents) && (atom_storage.locked == STORAGE_NOT_LOCKED)) + . += span_notice("Alt-click it to quickly draw the blade.") + +/obj/item/storage/belt/olivia_blade_sheath/click_alt(mob/user) + if(length(contents) && (atom_storage.locked == STORAGE_NOT_LOCKED)) + var/obj/item/I = contents[1] + user.visible_message(span_notice("[user] takes [I] out of [src]."), span_notice("You take [I] out of [src].")) + user.put_in_hands(I) + update_appearance() + else if(atom_storage.locked != STORAGE_NOT_LOCKED) + balloon_alert(user, "it's not budging!") + else + balloon_alert(user, "it's empty!") + return CLICK_ACTION_SUCCESS + +/obj/item/storage/belt/olivia_blade_sheath/proc/toggle_sheath_lock() + if(atom_storage.locked != STORAGE_NOT_LOCKED) + atom_storage.locked = STORAGE_NOT_LOCKED + else + atom_storage.locked = STORAGE_FULLY_LOCKED + +/obj/item/storage/belt/olivia_blade_sheath/worn_overlays(mutable_appearance/standing, isinhands = FALSE) + . = ..() + + if(contents.len) + . += mutable_appearance(worn_icon, "sheath_blade", layer = standing.layer + 0.1) + +/obj/item/storage/belt/olivia_blade_sheath/update_overlays() + . = ..() + + if(contents.len) + . += mutable_appearance(icon, "sheath_sword", layer = layer + 0.1) + if(atom_storage.locked == STORAGE_FULLY_LOCKED) + . += mutable_appearance(icon, "lock", layer = layer + 0.11) + else + . += mutable_appearance(icon, "lock_inactive", layer = layer + 0.11) + +/obj/item/storage/belt/olivia_blade_sheath/PopulateContents() + new /obj/item/melee/olivia_blade(src) + update_appearance() 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 index 522e43f1d0d1..8aa03cb1e075 100644 --- 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 @@ -14,4 +14,6 @@ clawify(selected, BODY_ZONE_L_ARM, 10, 15, 20) + ADD_TRAIT(selected, TRAIT_FULL_PSIONIC, REF(selected)) + 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 index 6f1acfd8cb30..468d6c410563 100644 --- 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 @@ -1,7 +1,17 @@ -/datum/story_rapid_status/cosmos/princess_of_cosmos - name = "Princess of Cosmos" +/datum/story_rapid_status/cosmos/bound_princess + name = "Bound Princess" selectable = TRUE +/datum/story_rapid_status/cosmos/princess_of_cosmos/apply(mob/living/carbon/human/selected) + ADD_TRAIT(selected, TRAIT_FULL_PSIONIC, REF(selected)) + ADD_TRAIT(selected, TRAIT_SWORD_PSIONIC, REF(selected)) + + return TRUE + + +/datum/story_rapid_status/cosmos/bound_princess/princess_of_cosmos + name = "Princess of Cosmos" + /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, diff --git a/maplestation_modules/story_content/__crit_equipment/icons/olivia_blade.dmi b/maplestation_modules/story_content/__crit_equipment/icons/olivia_blade.dmi new file mode 100644 index 0000000000000000000000000000000000000000..871df1a37e17ebb1e4bc2637b3271116201550a5 GIT binary patch literal 1744 zcmV;>1~2)EP)V=-0C=2@&^-#nFboCY**=9y_R_z#OGzjhnkyL9mTOTbF1ARnU(-Ohl5FpZ zZ+WWKwY_z{YVMt!FlCCPx~TJRFU3rjeJQ7-6dvj6c`2EJvBW9{nh5kGfW=A*ODUK0 zK?;{(z$O3iJCjD|(C{kF9)bNvrt=(=UBw}q*CwQC1j97_T~w>KZ@&Nf08trQpz?oY zdH?_g?ny*JRCt{2oL^`hRTRe0h+u0PgqUihL2U}vm`#*a=r$>cl|};Ahxnvaw8RH3 z6e1D=^-rl9q4XvAP(iv>Fz8bSEh-AeKG@bm8`N%W37Be#O*OR;(rEj1o$t<`I6K*y z%+8;Cca!^rFgwZY+}-cH=iGDe9byR~$e@p#RW~>^G%Ou&X=$SE+dC}P?N=H%sca15 zcXw}<;x{*Mh;)xTEP5c#>s6!702Y68@)CM}53Y~gm;#g- z;1z#r>Q8EHyfbq8`AX2o`z`vA&tZsLY@BZ*YOi$hLFxv$#m{EjVvEo06Z8U(Yy^wV z=P)U58!AZE0I&G7v-63F&v?bg`42?jREzi^H3Ph9Cu#AKW+1jV62gdINdt2#1|*&H zOL3NH)ZO!OWHW-Ow1GKs15}9b7O@=h{i-LOBx-;P@qt@>cNz+U#jm8^4-%URs}i3n z2pVd@#kE#|zz~1^ z`iE)%cTLnbAS{Ug^8qXJf?DhdP%S21qT}tRMejZN#)M;(53wRZhxlPd^oq~3<8s@B_~BREw6+4lb=j1djHqo2jAa{x*VPMBr6WyoL^3*v=lG`y?Wch7OJgXYe&J|bn)Vk zwjp`>-LD?AMBNVm9`7Ym3aTdY3+IW550Hu+6UL+o0Fi)n1QVuy!EeHwP__ZOa()=N z)O6?kO;o&Yl!OsMCXDnGN%8-ASA?mKf>V%vldIppCU4l<+9`T_UzTh6uXJ6eyy&SY z@wvL;@xgDbfJsTM6~P4L{f)bd)6q!(m>hV+q@$7sWUNoc^G`la{l}a)!`b%syJ&iP zo<#mtI(ngc*lg#UOFxZWc&^^K3IqdAABR=#kC|d_Y%GHTZS4M zZlm5?PEh`LqSNa-36ap(x3eO|uLL*}kpE!>($V?zr(~+a--99{ungV2jp+6J@=|=f zh9M0NHI&P}pT_s7S|D`p1E;qG_dEgT5FaL#dT-zuF!TtC-Jd(J4?RVcyU}T z1RXf_esDun^kp`gWqXI%1in)O954Dnz2B7jm`H49IOyG43L;6Sq_|XZNfLSn> zBK%CiZkf7|xBQU?U}WYMI?T?n4g?c;0S@3bey~+(NRFa;fP3qVm!oq>oSiT%N1q-c z>N`WBcl-@YQ?wrd@i`K(3=Q!Q{X~RaF^G@-VSpzk49T!)Lk8FzAO#`qU^k3+#IQM!$5TwHnjC>k5uA3=^J&C+EM@w}{KATpeD#B*`mvvq8nIJrvrIT^1cvIVZo;J@V++JCaCUVb*L3z=mEehsr5o(37ApS<7 zemoks+udom%f~qPs@mn~A^XesX%L@5Bz%-W`%3>=M^cOz#Gg}~ewg8c_`?abUv&n! z(+;O0)t`aW4vulhgsM$J%Y~|ofaQiUKr_Yw%@_kTV+_!YF+elM0L>T!G-C|Vj4?nn m#sJM212kg{(2OxaGyegDQPx#0d!JM zQvg8b*k%9#0C9R$Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1@w6dulc=OSs;G$a@QLNCUw- zpb@;UaLa>@z-Ish!{%RAet-?YQAWUxz*R<{90d!JM zQvg8b*k%9#0C9R$Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1V3@Z7 zMDCk_Qvv5|{02ab*n`^upb?jxogBhR|5twz*!vvaAf#-a3gS(7;qzSmKZQs j;4CpXp$hPq7&HI?1RW;k@hUgP00000NkvXXu0mjfK$@<( literal 0 HcmV?d00001 diff --git a/maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_sheath.dmi b/maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_sheath.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6b39a7096f1e3692cb4186c4ad6638840e3948bd GIT binary patch literal 494 zcmVfAsth?=00001 zbW%=J06^y0W&i*Hbb3@+bVOxyV{&P5bZKvH004NLQ&wi#3HL)Z^iHkEOv#1!Pi;FX@ zC^0t`#5P1%7N3-pn39T1v9f}zp9|O#0DB2206>>X>Hq)$>`6pHRA_=1ONa4fXfkLCnY7H(q0ghe2lFoq^JsH?zAhi zlx^|7K+1M{l38!z^%N>YtdRb))5IVM1V;g;am;~^TUTf2C1CDx5|=z3o-=m<00000 z@EhuhsH4DWH%FqSh-en02HRCQmbm-;w|qXL&=mOC;L8Puf5B5haP9-PL23%dJ$$2} z{lT2b?D&07*qoM6N<$f|?f4rvLx| literal 0 HcmV?d00001 From 97c86e5b3dbaa0d363880c400d2b66b49c1853df Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sun, 16 Aug 2026 02:56:12 -0400 Subject: [PATCH 23/26] Unlock spell --- .../__crit_equipment/code/olivia_blade.dm | 28 +++++++- .../code/rapid_statuses/princess_of_cosmos.dm | 4 +- .../__crit_equipment/code/spells.dm | 62 +++++++++++++++--- .../__crit_equipment/icons/unlock_spell.dmi | Bin 0 -> 343 bytes 4 files changed, 82 insertions(+), 12 deletions(-) create mode 100644 maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm b/maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm index a2c90033e914..2a5d8dfafee5 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm +++ b/maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm @@ -63,6 +63,7 @@ attack_verb_continuous = initial(attack_verb_continuous) attack_verb_simple = initial(attack_verb_simple) hitsound = initial(hitsound) + update_appearance() // THATS RIGHT ITS THE BASEBALL BAT KNOCKBACK /obj/item/melee/olivia_blade/attack(mob/living/target, mob/living/user) @@ -114,6 +115,7 @@ atom_storage.set_holdable(/obj/item/melee/olivia_blade) atom_storage.click_alt_open = FALSE atom_storage.locked = STORAGE_FULLY_LOCKED + update_appearance() /obj/item/storage/belt/olivia_blade_sheath/examine(mob/user) . = ..() @@ -126,7 +128,7 @@ user.visible_message(span_notice("[user] takes [I] out of [src]."), span_notice("You take [I] out of [src].")) user.put_in_hands(I) update_appearance() - else if(atom_storage.locked != STORAGE_NOT_LOCKED) + else if(length(contents) && atom_storage.locked != STORAGE_NOT_LOCKED) balloon_alert(user, "it's not budging!") else balloon_alert(user, "it's empty!") @@ -135,8 +137,31 @@ /obj/item/storage/belt/olivia_blade_sheath/proc/toggle_sheath_lock() if(atom_storage.locked != STORAGE_NOT_LOCKED) atom_storage.locked = STORAGE_NOT_LOCKED + atom_storage.display_contents = TRUE + update_appearance() + return TRUE else atom_storage.locked = STORAGE_FULLY_LOCKED + atom_storage.display_contents = FALSE + atom_storage.close_all() + update_appearance() + return FALSE + +/obj/item/storage/belt/olivia_blade_sheath/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + SHOULD_CALL_PARENT(TRUE) + + if(!length(contents) && istype(tool, /obj/item/melee/olivia_blade) && atom_storage.locked == STORAGE_FULLY_LOCKED) + if(do_after(user, 4 SECONDS, src)) + atom_storage.attempt_insert(tool, user, force = STORAGE_FULLY_LOCKED) + return ITEM_INTERACT_SUCCESS + else + return ..() + + if(length(contents) && istype(tool, /obj/item/melee/olivia_blade) && atom_storage.locked == STORAGE_FULLY_LOCKED) // what + balloon_alert(user, "it's full.") + return ..() + + return ..() /obj/item/storage/belt/olivia_blade_sheath/worn_overlays(mutable_appearance/standing, isinhands = FALSE) . = ..() @@ -149,6 +174,7 @@ if(contents.len) . += mutable_appearance(icon, "sheath_sword", layer = layer + 0.1) + if(atom_storage.locked == STORAGE_FULLY_LOCKED) . += mutable_appearance(icon, "lock", layer = layer + 0.11) else 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 index 468d6c410563..136fd2945ed6 100644 --- 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 @@ -2,7 +2,7 @@ name = "Bound Princess" selectable = TRUE -/datum/story_rapid_status/cosmos/princess_of_cosmos/apply(mob/living/carbon/human/selected) +/datum/story_rapid_status/cosmos/bound_princess/apply(mob/living/carbon/human/selected) ADD_TRAIT(selected, TRAIT_FULL_PSIONIC, REF(selected)) ADD_TRAIT(selected, TRAIT_SWORD_PSIONIC, REF(selected)) @@ -12,7 +12,7 @@ /datum/story_rapid_status/cosmos/bound_princess/princess_of_cosmos name = "Princess of Cosmos" -/datum/story_rapid_status/cosmos/princess_of_cosmos/apply(mob/living/carbon/human/selected) +/datum/story_rapid_status/cosmos/bound_princess/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, diff --git a/maplestation_modules/story_content/__crit_equipment/code/spells.dm b/maplestation_modules/story_content/__crit_equipment/code/spells.dm index 84c3228787af..70c1f78e3e93 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/spells.dm +++ b/maplestation_modules/story_content/__crit_equipment/code/spells.dm @@ -23,18 +23,13 @@ /datum/action/cooldown/spell/spirit_force_camellia/cast(mob/living/cast_on) . = ..() - to_chat(cast_on, "cast start") - if(cast_on.has_status_effect(/datum/status_effect/spirit_force_camellia)) - to_chat(cast_on, "cast DELET") cast_on.remove_status_effect(/datum/status_effect/spirit_force_camellia) if(cast_on.mob_mood.sanity <= SANITY_UNSTABLE) - to_chat(cast_on, "cast cancel") return SPELL_CANCEL_CAST cast_on.apply_status_effect(/datum/status_effect/spirit_force_camellia) - to_chat(cast_on, "cast done") /datum/mood_event/spirit_force_camellia description = "My spirit is on fire." @@ -47,7 +42,6 @@ UnregisterSignal(owner, COMSIG_MOB_AFTER_APPLY_DAMAGE) /datum/mood_event/spirit_force_camellia/proc/update_mood(atom/source, damage) - to_chat(owner, "mood update") var/old_mood = mood_change mood_change -= damage * 0.1 //add a max mood change malus and make it not count negative damage if(old_mood != mood_change) @@ -59,14 +53,12 @@ alert_type = /atom/movable/screen/alert/status_effect/spirit_force_camellia /datum/status_effect/spirit_force_camellia/on_apply() - to_chat(owner, "status apply") owner.add_mood_event("spirit_force_camellia", /datum/mood_event/spirit_force_camellia) owner.add_filter("spirit_force", 2, list("type" = "drop_shadow", "x" = 0, "y" = 1, "color" = COLOR_DARK_RED, "size" = 2)) owner.add_consciousness_modifier("spirit_force", 0) return ..() /datum/status_effect/spirit_force_camellia/on_remove() - to_chat(owner, "status remove") owner.clear_mood_event("spirit_force_camellia") owner.remove_filter("spirit_force") @@ -74,10 +66,62 @@ . = ..() if(owner.mob_mood.sanity <= SANITY_UNSTABLE) - to_chat(owner, "status DELETE") qdel(src) /atom/movable/screen/alert/status_effect/spirit_force_camellia name = "Spirit Force" desc = "You have enhanced power and lifesteal, but this is taxing on your soul. Damage also applies to your mood and consciousness. Low sanity will turn off this spell." icon_state = "lightningorb" + + +/datum/action/cooldown/spell/pointed/unlock_chromatic_world + name = "Unlock - Chromatic World" + desc = "The world knows better than to stand in your way. Use on a supported object to unlock it." + button_icon = 'maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi' + button_icon_state = "unlock" + + background_icon_state = "bg_default" + overlay_icon_state = "bg_default_border" + + sound = 'sound/magic/blink.ogg' + + school = SCHOOL_FORBIDDEN + cooldown_time = 8 SECONDS + + active_msg = "You prepare to unlock a target..." + deactive_msg = "You dispel your unlocking focus." + + invocation_type = INVOCATION_NONE + spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC + +/datum/action/cooldown/spell/pointed/unlock_chromatic_world/is_valid_target(atom/cast_on) + if(istype(cast_on, /obj/machinery/door/airlock)) + return cast_on + + if(isliving(cast_on)) + var/mob/living/check_him = cast_on + + if(locate(/obj/item/storage/belt/olivia_blade_sheath) in check_him.get_contents()) + return TRUE + else + owner.balloon_alert(owner, "nothing to unlock!") + return FALSE + + else + return FALSE + +/datum/action/cooldown/spell/pointed/unlock_chromatic_world/cast(atom/cast_on) + . = ..() + + if(istype(cast_on, /obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/airlock_to_open = cast_on + airlock_to_open.open(FORCING_DOOR_CHECKS) + + if(isliving(cast_on)) + var/mob/living/check_him = cast_on + var/obj/item/storage/belt/olivia_blade_sheath/sheath_to_find = locate() in check_him.get_contents() + if(sheath_to_find.toggle_sheath_lock()) + cast_on.balloon_alert(owner, "blade unlocked!") + else if (sheath_to_find) // just in case is_valid_target didnt do its job + cast_on.balloon_alert(owner, "blade locked!") + diff --git a/maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi b/maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a25a4a301abf330cbeb03697d52f6e779de6db57 GIT binary patch literal 343 zcmV-d0jU0oP)V=-0C=2J zR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5 zsWdMqKRH{8i!&v&s2C_<$i4M Date: Sun, 16 Aug 2026 15:00:10 -0400 Subject: [PATCH 24/26] Adds in the webs spell --- maplestation.dme | 1 + .../code/rapid_statuses/hacker_they.dm | 13 ++ .../code/rapid_statuses/princess_of_cosmos.dm | 2 + .../__crit_equipment/code/spells.dm | 141 +++++++++++++++++- .../__crit_equipment/icons/unlock_spell.dmi | Bin 343 -> 514 bytes 5 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/hacker_they.dm diff --git a/maplestation.dme b/maplestation.dme index 0cf4a44d22a7..530e67214351 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6825,6 +6825,7 @@ #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\hacker_they.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" diff --git a/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/hacker_they.dm b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/hacker_they.dm new file mode 100644 index 000000000000..9e6b4f916b1f --- /dev/null +++ b/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/hacker_they.dm @@ -0,0 +1,13 @@ +/datum/story_rapid_status/hacker_they + name = "Hacker They" + selectable = TRUE + +/datum/story_rapid_status/hacker_they/apply(mob/living/carbon/human/selected) + var/list/datum/action/cooldown/spell/spells_to_grant = list( + /datum/action/cooldown/spell/pointed/unlock_chromatic_world, + /datum/action/cooldown/spell/spiders_webs, + ) + + grant_spell_list(selected, spells_to_grant, TRUE) + + 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 index 136fd2945ed6..7dbdcc114647 100644 --- 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 @@ -5,6 +5,7 @@ /datum/story_rapid_status/cosmos/bound_princess/apply(mob/living/carbon/human/selected) ADD_TRAIT(selected, TRAIT_FULL_PSIONIC, REF(selected)) ADD_TRAIT(selected, TRAIT_SWORD_PSIONIC, REF(selected)) + ADD_TRAIT(selected, TRAIT_DEVIL_WEBBED, REF(selected)) return TRUE @@ -13,6 +14,7 @@ name = "Princess of Cosmos" /datum/story_rapid_status/cosmos/bound_princess/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, diff --git a/maplestation_modules/story_content/__crit_equipment/code/spells.dm b/maplestation_modules/story_content/__crit_equipment/code/spells.dm index 70c1f78e3e93..a5ff3ebfa97e 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/spells.dm +++ b/maplestation_modules/story_content/__crit_equipment/code/spells.dm @@ -75,7 +75,7 @@ /datum/action/cooldown/spell/pointed/unlock_chromatic_world - name = "Unlock - Chromatic World" + name = "Unlock - ???" desc = "The world knows better than to stand in your way. Use on a supported object to unlock it." button_icon = 'maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi' button_icon_state = "unlock" @@ -125,3 +125,142 @@ else if (sheath_to_find) // just in case is_valid_target didnt do its job cast_on.balloon_alert(owner, "blade locked!") +/// Used to define who's in the devil's webs +#define TRAIT_DEVIL_WEBBED "devil_webbed" + +/// I'm not typing that whole thing out every single time its referenced +#define PARAPLEGIC_EFFECT "Savage Spider's Ultimate Technique - Induce Paraplegia (足の感覚がありません)" + +// i might move this away from traits and just require story status in order to get into a global list, this SUCKS +/datum/action/cooldown/spell/spiders_webs + name = "The Spider's Webs" + desc = "Adjust the webs you have woven on somebody else. You can only have one effect active at once." + button_icon = 'maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi' + button_icon_state = "webs" + + background_icon_state = "bg_default" + overlay_icon_state = "bg_default_border" + + sound = null + + school = SCHOOL_FORBIDDEN + cooldown_time = 10 SECONDS + + invocation_type = INVOCATION_NONE + spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC + + var/list/evil_status_effects_of_doom = list( + "Clear Effect", + "Slowdown", + "Mana Drain", + PARAPLEGIC_EFFECT, + ) + +/datum/action/cooldown/spell/spiders_webs/PreActivate(atom/caster) + var/list/webbed_up_peeps = list() + for(var/mob/living/literally_any_mob in world) // i am so sorry + if(HAS_TRAIT(literally_any_mob, TRAIT_DEVIL_WEBBED)) + webbed_up_peeps += literally_any_mob + + if(!length(webbed_up_peeps)) + caster.balloon_alert(caster, "no target!") + return FALSE + + if(QDELETED(src) || QDELETED(caster) || !can_cast_spell()) + return FALSE + + if(length(webbed_up_peeps) > 1) + var/mob/chosen = tgui_input_list(caster, "Choose a target.", name, sort_names(webbed_up_peeps)) + return Activate(chosen) + + if(length(webbed_up_peeps) == 1) + return Activate(webbed_up_peeps[1]) + +/datum/action/cooldown/spell/spiders_webs/cast(mob/living/cast_on) + . = ..() + + var/chosen_effect = tgui_input_list(owner, "Choose an effect.", name, evil_status_effects_of_doom) + switch(chosen_effect) + + if("Clear Effect") + cast_on.remove_status_effect(/datum/status_effect/devil_webbed) //This removes based on id rather than specifically checking type + + if("Slowdown") + cast_on.apply_status_effect(/datum/status_effect/devil_webbed/slowdown) + + if("Mana Drain") + cast_on.apply_status_effect(/datum/status_effect/devil_webbed/mana_drain) + + if(PARAPLEGIC_EFFECT) + cast_on.apply_status_effect(/datum/status_effect/devil_webbed/paraplegic) + + +/datum/status_effect/devil_webbed + id = "devil_webbed" + duration = -1 + status_type = STATUS_EFFECT_REPLACE + alert_type = /atom/movable/screen/alert/status_effect/devil_webbed + +/atom/movable/screen/alert/status_effect/devil_webbed + name = "broken effect" + desc = "If you're seeing this, someone forgot to set alert_type." + icon_state = "paralysis" + + +/datum/status_effect/devil_webbed/slowdown + alert_type = /atom/movable/screen/alert/status_effect/devil_webbed/slowdown + +/datum/status_effect/devil_webbed/slowdown/on_apply() + owner.add_movespeed_modifier(/datum/movespeed_modifier/devil_web_slowdown) + + return ..() + +/datum/status_effect/devil_webbed/slowdown/on_remove() + owner.remove_movespeed_modifier(/datum/movespeed_modifier/devil_web_slowdown) + +/atom/movable/screen/alert/status_effect/devil_webbed/slowdown + name = "Slowdown" + desc = "Your legs feel as if they're being restrained by strings." + +/datum/movespeed_modifier/devil_web_slowdown + multiplicative_slowdown = 1.5 + + +/datum/status_effect/devil_webbed/mana_drain + alert_type = /atom/movable/screen/alert/status_effect/devil_webbed/mana_drain + // carbon owner, cached since we're doing things on tick + var/mob/living/carbon/carbon_owner + +/datum/status_effect/devil_webbed/mana_drain/on_apply() + if(!iscarbon(owner)) + return FALSE + carbon_owner = owner + return ..() + +/datum/status_effect/devil_webbed/mana_drain/tick(seconds_between_ticks) + if(carbon_owner?.mana_pool) + carbon_owner.safe_adjust_personal_mana(-5 * seconds_between_ticks) + +/atom/movable/screen/alert/status_effect/devil_webbed/mana_drain + name = "Mana Drain" + desc = "Your whole body feels tight, and you feel yourself getting weaker and weaker..." + +/datum/status_effect/devil_webbed/paraplegic + alert_type = /atom/movable/screen/alert/status_effect/devil_webbed/paraplegic + +/datum/status_effect/devil_webbed/paraplegic/on_apply() + var/mob/living/carbon/human/human_owner = owner + if(human_owner?.has_trauma_type(/datum/brain_trauma/severe/paralysis/paraplegic)) // damn + return FALSE + human_owner?.gain_trauma(/datum/brain_trauma/severe/paralysis/paraplegic, TRAUMA_RESILIENCE_ABSOLUTE) + + return ..() + +/datum/status_effect/devil_webbed/paraplegic/on_remove() + var/mob/living/carbon/human/human_owner = owner + human_owner?.cure_trauma_type(/datum/brain_trauma/severe/paralysis/paraplegic, TRAUMA_RESILIENCE_ABSOLUTE) + +/atom/movable/screen/alert/status_effect/devil_webbed/paraplegic + name = "Paraplegic" + desc = "You feel a strong constriction around your legs. You can't use them anymore." + diff --git a/maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi b/maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi index a25a4a301abf330cbeb03697d52f6e779de6db57..57aa30b345057022d70c5728eed5beb18b550646 100644 GIT binary patch delta 428 zcmV;d0aO0h0)hlkiBL{Q4GJ0x0000DNk~Le0000$0000W1Oos708q1Iw*UYD5>QN3 zMgRZ*LI41*0089V@nHY}<^TXJHU)eD0004WQchCTlijVuFbIVyPTu1U5bgk0S)i&sKwi54 zDup;d(DYWiQvG5le1YQw0r=U<{{ZN1KLHrF&p;Bn9SJVe3M>a*%q&6<$SaVi9tKLx z)k&~GUO@#^o|dRigGKUxmf#c6Lu&%i;#d^$*Hm?Fmq-YRrM~%aZEZV}A-58Z81dTf zyA23rHaK9OpAdku7)9u-4DFJ0o-7PxB9WLD?fRBS{jdYT3Sdc9V2O92>G8RxQy)-` z6n57b9^h_8P-;=ci5wcwERLtq!mDzg&9aThNK?{Qv3lvA+G=b|94_wNMvAG z%fRrAf#KY=iYTBIV@Z%-FoVOh8)-mJ*2I9sdTs3;zjij9Wo3vuB{f}0yCerF(ctOg z7@{$8>4dYq2NXD3H(E91T(A*0*wxVf&OZ3>YRA1MZ>=?I8pRu4Z2ci0u&r5Y%6#jD z-&1aLUCGcE>~50NdN}*8fzE6u1K-4w1Dc Date: Sun, 16 Aug 2026 19:35:12 -0400 Subject: [PATCH 25/26] quick feex --- .../story_content/__crit_equipment/code/spells.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/maplestation_modules/story_content/__crit_equipment/code/spells.dm b/maplestation_modules/story_content/__crit_equipment/code/spells.dm index a5ff3ebfa97e..b0439e2513fb 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/spells.dm +++ b/maplestation_modules/story_content/__crit_equipment/code/spells.dm @@ -206,6 +206,10 @@ desc = "If you're seeing this, someone forgot to set alert_type." icon_state = "paralysis" +// quick fix so that replacing the effect with another one doesn't end up keeping the maluses +/datum/status_effect/devil_webbed/be_replaced() + on_remove() + . = ..() /datum/status_effect/devil_webbed/slowdown alert_type = /atom/movable/screen/alert/status_effect/devil_webbed/slowdown From 9fff6b433a8dfe1b7762be15ea96086cff79285c Mon Sep 17 00:00:00 2001 From: Critawakets Date: Sat, 29 Aug 2026 13:38:32 -0400 Subject: [PATCH 26/26] Repaths crit_equipment to not be prioritized again --- maplestation.dme | 32 +++++++++--------- .../code/areas.dm | 2 +- .../code/heat_blade.dm | 0 .../code/library/invitation.dm | 2 +- .../code/library/lazy_templates.dm | 0 .../code/library/weapons.dm | 6 ++-- .../code/olivia_blade.dm | 10 +++--- .../code/pendant.dm | 4 +-- .../code/rapid_statuses/_cosmos.dm | 0 .../code/rapid_statuses/hacker_they.dm | 0 .../code/rapid_statuses/herald_of_cosmos.dm | 0 .../code/rapid_statuses/prince_of_cosmos.dm | 0 .../code/rapid_statuses/princess_of_cosmos.dm | 0 .../code/rapid_statuses/silvered_huntress.dm | 0 .../code/spells.dm | 4 +-- .../code/tevetia_spells/dark_forging.dm | 0 .../code/tevetia_spells/dark_smoke.dm | 0 .../icons/areas_library.dmi | Bin .../icons/greenleaf_amulet.dmi | Bin .../icons/greenleaf_amulet_worn.dmi | Bin .../icons/kanabo.dmi | Bin .../icons/kanabo_lefthand.dmi | Bin .../icons/kanabo_righthand.dmi | Bin .../icons/library_card.dmi | Bin .../icons/olivia_blade.dmi | Bin .../icons/olivia_blade_lefthand.dmi | Bin .../icons/olivia_blade_righthand.dmi | Bin .../icons/olivia_blade_sheath.dmi | Bin .../icons/unlock_spell.dmi | Bin 29 files changed, 30 insertions(+), 30 deletions(-) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/areas.dm (88%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/heat_blade.dm (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/library/invitation.dm (95%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/library/lazy_templates.dm (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/library/weapons.dm (69%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/olivia_blade.dm (93%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/pendant.dm (79%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/rapid_statuses/_cosmos.dm (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/rapid_statuses/hacker_they.dm (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/rapid_statuses/herald_of_cosmos.dm (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/rapid_statuses/prince_of_cosmos.dm (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/rapid_statuses/princess_of_cosmos.dm (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/rapid_statuses/silvered_huntress.dm (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/spells.dm (98%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/tevetia_spells/dark_forging.dm (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/code/tevetia_spells/dark_smoke.dm (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/areas_library.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/greenleaf_amulet.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/greenleaf_amulet_worn.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/kanabo.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/kanabo_lefthand.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/kanabo_righthand.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/library_card.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/olivia_blade.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/olivia_blade_lefthand.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/olivia_blade_righthand.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/olivia_blade_sheath.dmi (100%) rename maplestation_modules/story_content/{__crit_equipment => crit_equipment}/icons/unlock_spell.dmi (100%) diff --git a/maplestation.dme b/maplestation.dme index 530e67214351..d4fe98ea74b8 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6816,22 +6816,22 @@ #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\olivia_blade.dm" -#include "maplestation_modules\story_content\__crit_equipment\code\pendant.dm" -#include "maplestation_modules\story_content\__crit_equipment\code\spells.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\hacker_they.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_forging.dm" -#include "maplestation_modules\story_content\__crit_equipment\code\tevetia_spells\dark_smoke.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\olivia_blade.dm" +#include "maplestation_modules\story_content\crit_equipment\code\pendant.dm" +#include "maplestation_modules\story_content\crit_equipment\code\spells.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\hacker_they.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_forging.dm" +#include "maplestation_modules\story_content\crit_equipment\code\tevetia_spells\dark_smoke.dm" #include "maplestation_modules\story_content\armored_corps\code\clothing\aylie_cloak.dm" #include "maplestation_modules\story_content\armored_corps\code\melee\void_blade.dm" #include "maplestation_modules\story_content\misc\underwear.dm" diff --git a/maplestation_modules/story_content/__crit_equipment/code/areas.dm b/maplestation_modules/story_content/crit_equipment/code/areas.dm similarity index 88% rename from maplestation_modules/story_content/__crit_equipment/code/areas.dm rename to maplestation_modules/story_content/crit_equipment/code/areas.dm index 911d7a82a96c..8e1531f0689a 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/areas.dm +++ b/maplestation_modules/story_content/crit_equipment/code/areas.dm @@ -1,6 +1,6 @@ /area/grand_library name = "Grand Library" - icon = 'maplestation_modules/story_content/__crit_equipment/icons/areas_library.dmi' + icon = 'maplestation_modules/story_content/crit_equipment/icons/areas_library.dmi' icon_state = "grand_library" static_lighting = TRUE requires_power = FALSE diff --git a/maplestation_modules/story_content/__crit_equipment/code/heat_blade.dm b/maplestation_modules/story_content/crit_equipment/code/heat_blade.dm similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/code/heat_blade.dm rename to maplestation_modules/story_content/crit_equipment/code/heat_blade.dm diff --git a/maplestation_modules/story_content/__crit_equipment/code/library/invitation.dm b/maplestation_modules/story_content/crit_equipment/code/library/invitation.dm similarity index 95% rename from maplestation_modules/story_content/__crit_equipment/code/library/invitation.dm rename to maplestation_modules/story_content/crit_equipment/code/library/invitation.dm index 51d6481b70eb..14005b05574c 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/library/invitation.dm +++ b/maplestation_modules/story_content/crit_equipment/code/library/invitation.dm @@ -1,7 +1,7 @@ /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 = '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 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 similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/code/library/lazy_templates.dm rename to maplestation_modules/story_content/crit_equipment/code/library/lazy_templates.dm diff --git a/maplestation_modules/story_content/__crit_equipment/code/library/weapons.dm b/maplestation_modules/story_content/crit_equipment/code/library/weapons.dm similarity index 69% rename from maplestation_modules/story_content/__crit_equipment/code/library/weapons.dm rename to maplestation_modules/story_content/crit_equipment/code/library/weapons.dm index fe4e2408c6bf..335e6528e4f9 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/library/weapons.dm +++ b/maplestation_modules/story_content/crit_equipment/code/library/weapons.dm @@ -1,11 +1,11 @@ /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 = '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' + 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 diff --git a/maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm b/maplestation_modules/story_content/crit_equipment/code/olivia_blade.dm similarity index 93% rename from maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm rename to maplestation_modules/story_content/crit_equipment/code/olivia_blade.dm index 2a5d8dfafee5..0461ef3736dc 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/olivia_blade.dm +++ b/maplestation_modules/story_content/crit_equipment/code/olivia_blade.dm @@ -4,11 +4,11 @@ /obj/item/melee/olivia_blade name = "ornate psi-blade" desc = "An incredibly ornate psionic blade. It's somewhat heavy." - icon = 'maplestation_modules/story_content/__crit_equipment/icons/olivia_blade.dmi' + icon = 'maplestation_modules/story_content/crit_equipment/icons/olivia_blade.dmi' icon_state = "olivia_blade" inhand_icon_state = "olivia_blade" - lefthand_file = 'maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_lefthand.dmi' - righthand_file = 'maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_righthand.dmi' + lefthand_file = 'maplestation_modules/story_content/crit_equipment/icons/olivia_blade_lefthand.dmi' + righthand_file = 'maplestation_modules/story_content/crit_equipment/icons/olivia_blade_righthand.dmi' obj_flags = CONDUCTS_ELECTRICITY | UNIQUE_RENAME force = 18 throwforce = 15 @@ -98,8 +98,8 @@ desc = "An ornate sheath designed to hold a psionic blade. It looks heavy enough to bludgeon with." force = 18 block_chance = 30 - icon = 'maplestation_modules/story_content/__crit_equipment/icons/olivia_blade.dmi' - worn_icon = 'maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_sheath.dmi' + icon = 'maplestation_modules/story_content/crit_equipment/icons/olivia_blade.dmi' + worn_icon = 'maplestation_modules/story_content/crit_equipment/icons/olivia_blade_sheath.dmi' icon_state = "sheath" worn_icon_state = "sheath" w_class = WEIGHT_CLASS_BULKY diff --git a/maplestation_modules/story_content/__crit_equipment/code/pendant.dm b/maplestation_modules/story_content/crit_equipment/code/pendant.dm similarity index 79% rename from maplestation_modules/story_content/__crit_equipment/code/pendant.dm rename to maplestation_modules/story_content/crit_equipment/code/pendant.dm index 563571d11709..82062c7362ea 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/pendant.dm +++ b/maplestation_modules/story_content/crit_equipment/code/pendant.dm @@ -1,9 +1,9 @@ /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 = '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 = '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 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 similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/_cosmos.dm rename to maplestation_modules/story_content/crit_equipment/code/rapid_statuses/_cosmos.dm diff --git a/maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/hacker_they.dm b/maplestation_modules/story_content/crit_equipment/code/rapid_statuses/hacker_they.dm similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/hacker_they.dm rename to maplestation_modules/story_content/crit_equipment/code/rapid_statuses/hacker_they.dm 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 similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/herald_of_cosmos.dm rename to maplestation_modules/story_content/crit_equipment/code/rapid_statuses/herald_of_cosmos.dm 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 similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/prince_of_cosmos.dm rename to maplestation_modules/story_content/crit_equipment/code/rapid_statuses/prince_of_cosmos.dm 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 similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/princess_of_cosmos.dm rename to maplestation_modules/story_content/crit_equipment/code/rapid_statuses/princess_of_cosmos.dm 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 similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/code/rapid_statuses/silvered_huntress.dm rename to maplestation_modules/story_content/crit_equipment/code/rapid_statuses/silvered_huntress.dm diff --git a/maplestation_modules/story_content/__crit_equipment/code/spells.dm b/maplestation_modules/story_content/crit_equipment/code/spells.dm similarity index 98% rename from maplestation_modules/story_content/__crit_equipment/code/spells.dm rename to maplestation_modules/story_content/crit_equipment/code/spells.dm index b0439e2513fb..b12f5611c532 100644 --- a/maplestation_modules/story_content/__crit_equipment/code/spells.dm +++ b/maplestation_modules/story_content/crit_equipment/code/spells.dm @@ -77,7 +77,7 @@ /datum/action/cooldown/spell/pointed/unlock_chromatic_world name = "Unlock - ???" desc = "The world knows better than to stand in your way. Use on a supported object to unlock it." - button_icon = 'maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi' + button_icon = 'maplestation_modules/story_content/crit_equipment/icons/unlock_spell.dmi' button_icon_state = "unlock" background_icon_state = "bg_default" @@ -135,7 +135,7 @@ /datum/action/cooldown/spell/spiders_webs name = "The Spider's Webs" desc = "Adjust the webs you have woven on somebody else. You can only have one effect active at once." - button_icon = 'maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi' + button_icon = 'maplestation_modules/story_content/crit_equipment/icons/unlock_spell.dmi' button_icon_state = "webs" background_icon_state = "bg_default" diff --git a/maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_forging.dm b/maplestation_modules/story_content/crit_equipment/code/tevetia_spells/dark_forging.dm similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_forging.dm rename to maplestation_modules/story_content/crit_equipment/code/tevetia_spells/dark_forging.dm 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 similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/code/tevetia_spells/dark_smoke.dm rename to maplestation_modules/story_content/crit_equipment/code/tevetia_spells/dark_smoke.dm diff --git a/maplestation_modules/story_content/__crit_equipment/icons/areas_library.dmi b/maplestation_modules/story_content/crit_equipment/icons/areas_library.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/areas_library.dmi rename to maplestation_modules/story_content/crit_equipment/icons/areas_library.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet.dmi b/maplestation_modules/story_content/crit_equipment/icons/greenleaf_amulet.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet.dmi rename to maplestation_modules/story_content/crit_equipment/icons/greenleaf_amulet.dmi 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 similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/greenleaf_amulet_worn.dmi rename to maplestation_modules/story_content/crit_equipment/icons/greenleaf_amulet_worn.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/icons/kanabo.dmi b/maplestation_modules/story_content/crit_equipment/icons/kanabo.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/kanabo.dmi rename to maplestation_modules/story_content/crit_equipment/icons/kanabo.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/icons/kanabo_lefthand.dmi b/maplestation_modules/story_content/crit_equipment/icons/kanabo_lefthand.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/kanabo_lefthand.dmi rename to maplestation_modules/story_content/crit_equipment/icons/kanabo_lefthand.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/icons/kanabo_righthand.dmi b/maplestation_modules/story_content/crit_equipment/icons/kanabo_righthand.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/kanabo_righthand.dmi rename to maplestation_modules/story_content/crit_equipment/icons/kanabo_righthand.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/icons/library_card.dmi b/maplestation_modules/story_content/crit_equipment/icons/library_card.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/library_card.dmi rename to maplestation_modules/story_content/crit_equipment/icons/library_card.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/icons/olivia_blade.dmi b/maplestation_modules/story_content/crit_equipment/icons/olivia_blade.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/olivia_blade.dmi rename to maplestation_modules/story_content/crit_equipment/icons/olivia_blade.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_lefthand.dmi b/maplestation_modules/story_content/crit_equipment/icons/olivia_blade_lefthand.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_lefthand.dmi rename to maplestation_modules/story_content/crit_equipment/icons/olivia_blade_lefthand.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_righthand.dmi b/maplestation_modules/story_content/crit_equipment/icons/olivia_blade_righthand.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_righthand.dmi rename to maplestation_modules/story_content/crit_equipment/icons/olivia_blade_righthand.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_sheath.dmi b/maplestation_modules/story_content/crit_equipment/icons/olivia_blade_sheath.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/olivia_blade_sheath.dmi rename to maplestation_modules/story_content/crit_equipment/icons/olivia_blade_sheath.dmi diff --git a/maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi b/maplestation_modules/story_content/crit_equipment/icons/unlock_spell.dmi similarity index 100% rename from maplestation_modules/story_content/__crit_equipment/icons/unlock_spell.dmi rename to maplestation_modules/story_content/crit_equipment/icons/unlock_spell.dmi