From fbd145a48ee37ccd6d7a6ab95468af8183d60516 Mon Sep 17 00:00:00 2001 From: JohnFulpWillard <53777086+JohnFulpWillard@users.noreply.github.com> Date: Tue, 20 Jun 2023 17:13:01 -0400 Subject: [PATCH] Removes devils --- _maps/map_files/generic/CentCom.dmm | 1 - code/__DEFINES/hud.dm | 2 - code/__DEFINES/is_helpers.dm | 5 +- code/__DEFINES/language.dm | 1 - code/__DEFINES/mobs.dm | 1 - code/__DEFINES/role_preferences.dm | 2 - code/__DEFINES/traits.dm | 3 + code/__HELPERS/unsorted.dm | 2 - code/_globalvars/lists/mapping.dm | 2 +- code/_onclick/hud/devil.dm | 60 -- code/_onclick/hud/hud.dm | 3 - code/_onclick/hud/human.dm | 32 - code/_onclick/other_mobs.dm | 7 - code/datums/ai_laws.dm | 15 - code/datums/mind.dm | 3 - code/datums/soullink.dm | 160 ----- .../devil/devil agent/devil_agent.dm | 44 -- code/game/gamemodes/devil/devil_game_mode.dm | 105 --- code/game/gamemodes/devil/game_mode.dm | 16 - code/game/gamemodes/devil/objectives.dm | 121 ---- .../dynamic/dynamic_rulesets_roundstart.dm | 53 -- code/game/machinery/cloning.dm | 2 +- code/game/machinery/computer/arcade.dm | 2 +- code/game/machinery/computer/cloning.dm | 2 +- code/game/objects/effects/landmarks.dm | 2 +- code/game/objects/items/AI_modules.dm | 2 +- code/game/objects/items/defib.dm | 2 +- code/game/objects/items/toys.dm | 34 +- code/game/objects/items/twohanded.dm | 58 -- .../objects/structures/ghost_role_spawners.dm | 42 -- code/game/objects/structures/morgue.dm | 2 +- code/modules/admin/admin.dm | 16 - code/modules/admin/sql_ban_system.dm | 2 +- code/modules/admin/topic.dm | 6 - code/modules/antagonists/devil/devil.dm | 601 ------------------ .../antagonists/devil/devil_helpers.dm | 38 -- code/modules/antagonists/devil/imp/imp.dm | 76 --- .../devil/sintouched/objectives.dm | 23 - .../devil/sintouched/sintouched.dm | 66 -- .../devil/true_devil/_true_devil.dm | 219 ------- .../antagonists/devil/true_devil/inventory.dm | 48 -- .../eldritch_cult/eldritch_effects.dm | 2 +- .../awaymissions/mission_code/Academy.dm | 1 - code/modules/events/devil.dm | 58 -- code/modules/hydroponics/grown/replicapod.dm | 10 +- code/modules/instruments/items.dm | 1 - code/modules/library/lib_codex_gigas.dm | 88 +-- .../living/carbon/alien/special/facehugger.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/living/carbon/human/death.dm | 2 - .../mob/living/carbon/human/examine.dm | 4 +- code/modules/mob/living/carbon/human/human.dm | 5 - .../mob/living/carbon/human/species.dm | 4 +- .../carbon/human/species_types/flypeople.dm | 4 +- .../carbon/human/species_types/golems.dm | 4 +- .../carbon/human/species_types/mothmen.dm | 4 +- .../carbon/human/species_types/vampire.dm | 5 +- code/modules/mob/living/death.dm | 7 - code/modules/mob/living/living.dm | 27 - code/modules/mob/living/living_defines.dm | 2 - code/modules/mob/living/silicon/ai/ai.dm | 5 +- code/modules/mob/living/silicon/laws.dm | 10 - code/modules/mob/living/silicon/robot/laws.dm | 6 - code/modules/mob/living/silicon/silicon.dm | 27 - code/modules/mob/transform_procs.dm | 4 - code/modules/paperwork/contract.dm | 302 --------- code/modules/paperwork/photocopier.dm | 13 +- code/modules/projectiles/projectile/magic.dm | 2 +- .../chemistry/reagents/medicine_reagents.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 8 - code/modules/spells/spell_types/devil.dm | 263 -------- .../modules/spells/spell_types/devil_boons.dm | 82 --- code/modules/surgery/advanced/revival.dm | 2 +- code/modules/surgery/bodyparts/head.dm | 5 - code/modules/surgery/bodyparts/parts.dm | 28 - .../surgery/experimental_dissection.dm | 2 +- code/modules/surgery/organs/vocal_cords.dm | 18 +- icons/mob/screen_gen.dmi | Bin 122080 -> 91539 bytes .../antagonists/antagonists/devil.ts | 26 - yogstation.dme | 17 - .../_globalvars/lists/maintenance_loot.dm | 2 +- 81 files changed, 53 insertions(+), 2884 deletions(-) delete mode 100644 code/_onclick/hud/devil.dm delete mode 100644 code/datums/soullink.dm delete mode 100644 code/game/gamemodes/devil/devil agent/devil_agent.dm delete mode 100644 code/game/gamemodes/devil/devil_game_mode.dm delete mode 100644 code/game/gamemodes/devil/game_mode.dm delete mode 100644 code/game/gamemodes/devil/objectives.dm delete mode 100644 code/modules/antagonists/devil/devil.dm delete mode 100644 code/modules/antagonists/devil/devil_helpers.dm delete mode 100644 code/modules/antagonists/devil/imp/imp.dm delete mode 100644 code/modules/antagonists/devil/sintouched/objectives.dm delete mode 100644 code/modules/antagonists/devil/sintouched/sintouched.dm delete mode 100644 code/modules/antagonists/devil/true_devil/_true_devil.dm delete mode 100644 code/modules/antagonists/devil/true_devil/inventory.dm delete mode 100644 code/modules/events/devil.dm delete mode 100644 code/modules/paperwork/contract.dm delete mode 100644 code/modules/spells/spell_types/devil.dm delete mode 100644 code/modules/spells/spell_types/devil_boons.dm delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/devil.ts diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 1e4d92890254..3fd54d4968f8 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -9300,7 +9300,6 @@ /area/centcom/testchamber) "aug" = ( /obj/structure/table/wood, -/obj/item/twohanded/pitchfork/demonic/ascended, /obj/item/melee/powerfist, /turf/open/floor/wood, /area/centcom/testchamber) diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 1f04f5d9454f..c868613d2b59 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -40,8 +40,6 @@ #define ui_lingchemdisplay "WEST,CENTER-1:15" #define ui_lingstingdisplay "WEST:6,CENTER-3:11" -#define ui_devilsouldisplay "WEST:6,CENTER-1:15" - //Lower center, persistent menu #define ui_sstore1 "CENTER-5:10,SOUTH:5" #define ui_id "CENTER-4:12,SOUTH:5" diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index cd7cf7f0478c..6099733e7c06 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -107,8 +107,6 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define isalienqueen(A) (istype(A, /mob/living/carbon/alien/humanoid/royal/queen)) -#define isdevil(A) (istype(A, /mob/living/carbon/true_devil)) - //Silicon mobs #define issilicon(A) (istype(A, /mob/living/silicon)) @@ -162,7 +160,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define issupplypod(A) (istype(A, /obj/structure/closet/supplypod)) GLOBAL_LIST_INIT(shoefootmob, typecacheof(list( - /mob/living/carbon/human/, + /mob/living/carbon/human, /mob/living/simple_animal/cow, /mob/living/simple_animal/hostile/cat_butcherer, /mob/living/simple_animal/hostile/faithless, @@ -176,7 +174,6 @@ GLOBAL_LIST_INIT(shoefootmob, typecacheof(list( /mob/living/simple_animal/hostile/retaliate/spaceman, /mob/living/simple_animal/hostile/retaliate/nanotrasenpeace, /mob/living/simple_animal/hostile/retaliate/goat, - /mob/living/carbon/true_devil, ))) GLOBAL_LIST_INIT(clawfootmob, typecacheof(list( diff --git a/code/__DEFINES/language.dm b/code/__DEFINES/language.dm index b333b7f18059..541fe9e9253c 100644 --- a/code/__DEFINES/language.dm +++ b/code/__DEFINES/language.dm @@ -12,7 +12,6 @@ #define LANGUAGE_APHASIA "aphasia" #define LANGUAGE_CULTIST "cultist" #define LANGUAGE_CURATOR "curator" -#define LANGUAGE_DEVIL "devil" #define LANGUAGE_GLAND "gland" #define LANGUAGE_HAT "hat" #define LANGUAGE_HIGH "high" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index a1b8fa4e6387..e6b4b612f86b 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -98,7 +98,6 @@ #define MONKEY_BODYPART "monkey" #define ALIEN_BODYPART "alien" #define LARVA_BODYPART "larva" -#define DEVIL_BODYPART "devil" /*see __DEFINES/inventory.dm for bodypart bitflag defines*/ //Reagent Metabolization flags, defines the type of reagents that affect this mob diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index d835e5a0fea7..b19919dd92d3 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -26,7 +26,6 @@ #define ROLE_MONKEY "Monkey" #define ROLE_ABDUCTOR "Abductor" #define ROLE_REVENANT "Revenant" -#define ROLE_DEVIL "Devil" #define ROLE_SERVANT_OF_RATVAR "Servant of Ratvar" #define ROLE_BROTHER "Blood Brother" #define ROLE_BRAINWASHED "Brainwashed Victim" @@ -84,7 +83,6 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_MONKEY = /datum/antagonist/monkey, ROLE_ABDUCTOR = /datum/antagonist/abductor, ROLE_REVENANT = /datum/antagonist/revenant, - ROLE_DEVIL = /datum/antagonist/devil, ROLE_SERVANT_OF_RATVAR = /datum/antagonist/clockcult, ROLE_BROTHER = /datum/antagonist/brother, ROLE_BRAINWASHED = /datum/antagonist/brainwashed, diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 63edf6f14ef0..cb8e7bc9a13b 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -270,6 +270,9 @@ ///This mob can't use vehicles #define TRAIT_NOVEHICLE "no_vehicle" +///Trait given to a mob's mind to indicate they can't be revived due to otherworldly events. +#define TRAIT_HELLBOUND "hellbound" + /// This person is crying #define TRAIT_CRYING "crying" /// This human wants to see the color of their glasses, for some reason diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 4d29da2282aa..ba35d123cd95 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -334,8 +334,6 @@ Turf and target are separate in case you want to teleport some distance from a t moblist.Add(M) for(var/mob/living/simple_animal/M in sortmob) moblist.Add(M) - for(var/mob/living/carbon/true_devil/M in sortmob) - moblist.Add(M) return moblist // Format a power value in W, kW, MW, or GW. diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index bc5434c47fbe..d4dc642ce440 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -32,7 +32,7 @@ GLOBAL_LIST_EMPTY(tdome2) GLOBAL_LIST_EMPTY(tdomeobserve) GLOBAL_LIST_EMPTY(tdomeadmin) GLOBAL_LIST_EMPTY(prisonwarped) //list of players already warped -GLOBAL_LIST_EMPTY(blobstart) //stationloving objects, blobs, santa, respawning devils +GLOBAL_LIST_EMPTY(blobstart) //stationloving objects, blobs, santa GLOBAL_LIST_EMPTY(secequipment) //sec equipment lockers that scale with the number of sec players GLOBAL_LIST_EMPTY(deathsquadspawn) GLOBAL_LIST_EMPTY(emergencyresponseteamspawn) diff --git a/code/_onclick/hud/devil.dm b/code/_onclick/hud/devil.dm deleted file mode 100644 index 3e4b39832322..000000000000 --- a/code/_onclick/hud/devil.dm +++ /dev/null @@ -1,60 +0,0 @@ - -//Soul counter is stored with the humans, it does weird when you place it here apparently... - - -/datum/hud/devil/New(mob/owner) - ..() - var/atom/movable/screen/using - - using = new /atom/movable/screen/drop() - using.icon = ui_style - using.screen_loc = ui_drone_drop - static_inventory += using - - pull_icon = new /atom/movable/screen/pull() - pull_icon.icon = ui_style - pull_icon.update_icon(mymob) - pull_icon.screen_loc = ui_drone_pull - static_inventory += pull_icon - - build_hand_slots() - - using = new /atom/movable/screen/inventory() - using.name = "hand" - using.icon = ui_style - using.icon_state = "swap_1_m" - using.screen_loc = ui_swaphand_position(owner,1) - using.layer = HUD_LAYER - using.plane = HUD_PLANE - static_inventory += using - - using = new /atom/movable/screen/inventory() - using.name = "hand" - using.icon = ui_style - using.icon_state = "swap_2" - using.screen_loc = ui_swaphand_position(owner,2) - using.layer = HUD_LAYER - using.plane = HUD_PLANE - static_inventory += using - - zone_select = new /atom/movable/screen/zone_sel() - zone_select.icon = ui_style - zone_select.update_icon(mymob) - - devilsouldisplay = new /atom/movable/screen/devil/soul_counter - infodisplay += devilsouldisplay - - -/datum/hud/devil/persistent_inventory_update() - if(!mymob) - return - var/mob/living/carbon/true_devil/D = mymob - - if(hud_version != HUD_STYLE_NOHUD) - for(var/obj/item/I in D.held_items) - I.screen_loc = ui_hand_position(D.get_held_index_of_item(I)) - D.client.screen += I - else - for(var/obj/item/I in D.held_items) - I.screen_loc = null - D.client.screen -= I diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 3dcce9b09a83..224670e59e75 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -31,8 +31,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list( var/atom/movable/screen/alien_plasma_display var/atom/movable/screen/alien_queen_finder - var/atom/movable/screen/devil/soul_counter/devilsouldisplay - var/atom/movable/screen/action_intent var/atom/movable/screen/zone_select var/atom/movable/screen/pull_icon @@ -114,7 +112,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list( healths = null stamina = null healthdoll = null - devilsouldisplay = null blobpwrdisplay = null alien_plasma_display = null alien_queen_finder = null diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index a887012f4cb6..ac1739c7aa5e 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -33,35 +33,6 @@ var/mob/living/carbon/human/H = usr H.quick_equip() -/atom/movable/screen/devil - invisibility = INVISIBILITY_ABSTRACT - -/atom/movable/screen/devil/soul_counter - icon = 'icons/mob/screen_gen.dmi' - name = "souls owned" - icon_state = "Devil-6" - screen_loc = ui_devilsouldisplay - -/atom/movable/screen/devil/soul_counter/proc/update_counter(souls) - invisibility = 0 - maptext = ANTAG_MAPTEXT(souls, COLOR_RED) - switch(souls) - if(0, null) - icon_state = "Devil-1" - if(1,2) - icon_state = "Devil-2" - if(3 to 5) - icon_state = "Devil-3" - if(6 to 8) - icon_state = "Devil-4" - if(9 to INFINITY) - icon_state = "Devil-5" - else - icon_state = "Devil-6" - -/atom/movable/screen/devil/soul_counter/proc/clear() - invisibility = INVISIBILITY_ABSTRACT - /atom/movable/screen/ling/sting name = "current sting" screen_loc = ui_lingstingdisplay @@ -292,9 +263,6 @@ pull_icon.screen_loc = ui_above_intent static_inventory += pull_icon - devilsouldisplay = new /atom/movable/screen/devil/soul_counter - infodisplay += devilsouldisplay - zone_select = new /atom/movable/screen/zone_sel() zone_select.icon = ui_style zone_select.update_icon(mymob) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 45aa05ea2801..8cdf6039e574 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -202,13 +202,6 @@ /atom/proc/attack_drone(mob/living/simple_animal/drone/user) attack_hand(user) //defaults to attack_hand. Override it when you don't want drones to do same stuff as humans. -/* - True Devil -*/ - -/mob/living/carbon/true_devil/UnarmedAttack(atom/A, proximity) - A.attack_hand(src) - /* Brain */ diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index 5597f8f573f5..a2f4441aa580 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -1,4 +1,3 @@ -#define LAW_DEVIL "devil" #define LAW_ZEROTH "zeroth" #define LAW_INHERENT "inherent" #define LAW_SUPPLIED "supplied" @@ -15,7 +14,6 @@ var/list/ion = list() var/list/hacked = list() var/mob/living/silicon/owner - var/list/devillaws = list() var/id = DEFAULT_AI_LAWID /datum/ai_laws/proc/lawid_to_type(lawid) @@ -487,8 +485,6 @@ /datum/ai_laws/proc/get_law_amount(groups) var/law_amount = 0 - if(devillaws && (LAW_DEVIL in groups)) - law_amount++ if(zeroth && (LAW_ZEROTH in groups)) law_amount++ if(ion.len && (LAW_ION in groups)) @@ -504,9 +500,6 @@ law_amount++ return law_amount -/datum/ai_laws/proc/set_law_sixsixsix(laws) - devillaws = laws - /datum/ai_laws/proc/set_zeroth_law(law, law_borg = null) zeroth = law if(law_borg) //Making it possible for slaved borgs to see a different law 0 than their AI. --NEO @@ -643,10 +636,6 @@ zeroth = null zeroth_borg = null -/datum/ai_laws/proc/clear_law_sixsixsix(force) - if(force || !is_devil(owner)) - devillaws = null - /datum/ai_laws/proc/associate(mob/living/silicon/M) if(!owner) owner = M @@ -654,10 +643,6 @@ /datum/ai_laws/proc/get_law_list(include_zeroth = 0, show_numbers = 1) var/list/data = list() - if (include_zeroth && devillaws && devillaws.len) - for(var/i in devillaws) - data += "[show_numbers ? "666:" : ""] [i]" - if (include_zeroth && zeroth) data += "[show_numbers ? "0:" : ""] [zeroth]" diff --git a/code/datums/mind.dm b/code/datums/mind.dm index d99069f8125a..4ed8b69605fe 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -706,9 +706,6 @@ add_antag_datum(head) special_role = ROLE_REV_HEAD -/datum/mind/proc/owns_soul() - return soulOwner == src - /datum/mind/proc/transfer_martial_arts(mob/living/new_character) if(!ishuman(new_character)) return diff --git a/code/datums/soullink.dm b/code/datums/soullink.dm deleted file mode 100644 index de73a8e74c6d..000000000000 --- a/code/datums/soullink.dm +++ /dev/null @@ -1,160 +0,0 @@ - - -/mob/living - var/list/ownedSoullinks //soullinks we are the owner of - var/list/sharedSoullinks //soullinks we are a/the sharer of - -/mob/living/Destroy() - for(var/s in ownedSoullinks) - var/datum/soullink/S = s - S.ownerDies(FALSE) - qdel(s) //If the owner is destroy()'d, the soullink is destroy()'d - ownedSoullinks = null - for(var/s in sharedSoullinks) - var/datum/soullink/S = s - S.sharerDies(FALSE) - S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed - sharedSoullinks = null - return ..() - - - -//Keeps track of a Mob->Mob (potentially Player->Player) connection -//Can be used to trigger actions on one party when events happen to another -//Eg: shared deaths -//Can be used to form a linked list of mob-hopping -//Does NOT transfer with minds -/datum/soullink - var/mob/living/soulowner - var/mob/living/soulsharer - var/id //Optional ID, for tagging and finding specific instances - -/datum/soullink/Destroy() - if(soulowner) - LAZYREMOVE(soulowner.ownedSoullinks, src) - soulowner = null - if(soulsharer) - LAZYREMOVE(soulsharer.sharedSoullinks, src) - soulsharer = null - return ..() - -/datum/soullink/proc/removeSoulsharer(mob/living/sharer) - if(soulsharer == sharer) - soulsharer = null - LAZYREMOVE(sharer.sharedSoullinks, src) - -//Used to assign variables, called primarily by soullink() -//Override this to create more unique soullinks (Eg: 1->Many relationships) -//Return TRUE/FALSE to return the soullink/null in soullink() -/datum/soullink/proc/parseArgs(mob/living/owner, mob/living/sharer) - if(!owner || !sharer) - return FALSE - soulowner = owner - soulsharer = sharer - LAZYADD(owner.ownedSoullinks, src) - LAZYADD(sharer.sharedSoullinks, src) - return TRUE - -//Runs after /living death() -//Override this for content -/datum/soullink/proc/ownerDies(gibbed, mob/living/owner) - -//Runs after /living death() -//Override this for content -/datum/soullink/proc/sharerDies(gibbed, mob/living/owner) - -//Quick-use helper -/proc/soullink(typepath, ...) - var/datum/soullink/S = new typepath() - if(S.parseArgs(arglist(args.Copy(2, 0)))) - return S - - - -///////////////// -// MULTISHARER // -///////////////// -//Abstract soullink for use with 1 Owner -> Many Sharer setups -/datum/soullink/multisharer - var/list/soulsharers - -/datum/soullink/multisharer/parseArgs(mob/living/owner, list/sharers) - if(!owner || !LAZYLEN(sharers)) - return FALSE - soulowner = owner - soulsharers = sharers - LAZYADD(owner.ownedSoullinks, src) - for(var/l in sharers) - var/mob/living/L = l - LAZYADD(L.sharedSoullinks, src) - return TRUE - -/datum/soullink/multisharer/removeSoulsharer(mob/living/sharer) - LAZYREMOVE(soulsharers, sharer) - - - -///////////////// -// SHARED FATE // -///////////////// -//When the soulowner dies, the soulsharer dies, and vice versa -//This is intended for two players(or AI) and two mobs - -/datum/soullink/sharedfate/ownerDies(gibbed, mob/living/owner) - if(soulsharer) - soulsharer.death(gibbed) - -/datum/soullink/sharedfate/sharerDies(gibbed, mob/living/sharer) - if(soulowner) - soulowner.death(gibbed) - -///////////////// -// Demon Bind // -///////////////// -//When the soulowner dies, the soulsharer dies, but NOT vice versa -//This is intended for two players(or AI) and two mobs - -/datum/soullink/oneway/ownerDies(gibbed, mob/living/owner) - if(soulsharer) - soulsharer.dust(FALSE) - - -///////////////// -// SHARED BODY // -///////////////// -//When the soulsharer dies, they're placed in the soulowner, who remains alive -//If the soulowner dies, the soulsharer is killed and placed into the soulowner (who is still dying) -//This one is intended for one player moving between many mobs - -/datum/soullink/sharedbody/ownerDies(gibbed, mob/living/owner) - if(soulowner && soulsharer) - if(soulsharer.mind) - soulsharer.mind.transfer_to(soulowner) - soulsharer.death(gibbed) - -/datum/soullink/sharedbody/sharerDies(gibbed, mob/living/sharer) - if(soulowner && soulsharer && soulsharer.mind) - soulsharer.mind.transfer_to(soulowner) - - - -////////////////////// -// REPLACEMENT POOL // -////////////////////// -//When the owner dies, one of the sharers is placed in the owner's body, fully healed -//Sort of a "winner-stays-on" soullink -//Gibbing ends it immediately - -/datum/soullink/multisharer/replacementpool/ownerDies(gibbed, mob/living/owner) - if(LAZYLEN(soulsharers) && !gibbed) //let's not put them in some gibs - var/list/souls = shuffle(soulsharers.Copy()) - for(var/l in souls) - var/mob/living/L = l - if(L.stat != DEAD && L.mind) - L.mind.transfer_to(soulowner) - soulowner.revive(TRUE, TRUE) - L.death(FALSE) - -//Lose your claim to the throne! -/datum/soullink/multisharer/replacementpool/sharerDies(gibbed, mob/living/sharer) - removeSoulsharer(sharer) diff --git a/code/game/gamemodes/devil/devil agent/devil_agent.dm b/code/game/gamemodes/devil/devil agent/devil_agent.dm deleted file mode 100644 index c8fb62faba09..000000000000 --- a/code/game/gamemodes/devil/devil agent/devil_agent.dm +++ /dev/null @@ -1,44 +0,0 @@ -/datum/game_mode/devil/devil_agents - name = "Devil Agents" - config_tag = "devil_agents" - required_players = 25 - required_enemies = 3 - recommended_enemies = 8 - reroll_friendly = 0 - - traitors_possible = 10 //hard limit on traitors if scaling is turned off - num_modifier = 4 - objective_count = 2 - - var/list/devil_target_list = list() //will update to be a child of internal affairs when bothered - var/list/devil_late_joining_list = list() - minimum_devils = 3 - - announce_text = "There are devil agents onboard the station, trying to outbid each other!\n\ - + Devils: Purchase souls and interfere with your rivals!\n\ - + Crew: Resist the lure of sin and remain pure!" - -/datum/game_mode/devil/devil_agents/post_setup() - var/i = 0 - for(var/datum/mind/devil in devils) - i++ - if(i + 1 > devils.len) - i = 0 - devil_target_list[devil] = devils[i + 1] - ..() - -/datum/game_mode/devil/devil_agents/add_devil_objectives(datum/mind/devil_mind, quantity) - ..(devil_mind, quantity - give_outsell_objective(devil_mind)) - -/datum/game_mode/devil/devil_agents/proc/give_outsell_objective(datum/mind/devil) - //If you override this method, have it return the number of objectives added. - if(devil_target_list.len && devil_target_list[devil]) // Is a double agent - var/datum/mind/target_mind = devil_target_list[devil] - var/datum/antagonist/devil/D = target_mind.has_antag_datum(/datum/antagonist/devil) - var/datum/objective/devil/outsell/outsellobjective = new - outsellobjective.owner = devil - outsellobjective.target = target_mind - outsellobjective.update_explanation_text() - D.objectives += outsellobjective - return 1 - return 0 diff --git a/code/game/gamemodes/devil/devil_game_mode.dm b/code/game/gamemodes/devil/devil_game_mode.dm deleted file mode 100644 index c329f724330b..000000000000 --- a/code/game/gamemodes/devil/devil_game_mode.dm +++ /dev/null @@ -1,105 +0,0 @@ -/datum/game_mode/devil - name = "devil" - config_tag = "devil" - report_type = "devil" - antag_flag = ROLE_DEVIL - false_report_weight = 1 - protected_jobs = list("Lawyer", "Curator", "Chaplain", "Head of Security", "Captain", "AI") - required_players = 25 - required_enemies = 1 - recommended_enemies = 4 - reroll_friendly = 1 - enemy_minimum_age = 0 - title_icon = "devil" - restricted_jobs = list("Cyborg", "AI") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Brig Physician") //YOGS - added the hop and brig physician - - var/traitors_possible = 4 //hard limit on devils if scaling is turned off - var/num_modifier = 0 // Used for gamemodes, that are a child of traitor, that need more than the usual. - var/objective_count = 2 - var/minimum_devils = 1 - - announce_text = "There are devils onboard the station!\n\ - + Devils: Purchase souls and tempt the crew to sin!\n\ - + Crew: Resist the lure of sin and remain pure!" - -/datum/game_mode/devil/pre_setup() - if(CONFIG_GET(flag/protect_roles_from_antagonist)) - restricted_jobs += protected_jobs - if(CONFIG_GET(flag/protect_assistant_from_antagonist)) - restricted_jobs += "Assistant" - - var/num_devils = 1 - - var/tsc = CONFIG_GET(number/traitor_scaling_coeff) - if(tsc) - num_devils = max(minimum_devils, min( round(num_players() / (tsc * 3))+ 2 + num_modifier, round(num_players() / (tsc * 1.5)) + num_modifier)) - else - num_devils = max(minimum_devils, min(num_players(), traitors_possible)) - - for(var/j = 0, j < num_devils, j++) - if (!antag_candidates.len) - break - var/datum/mind/devil = antag_pick(antag_candidates) - devils += devil - devil.special_role = traitor_name - devil.restricted_roles = restricted_jobs - - //log_game("[key_name(devil)] has been selected as a [traitor_name]") | yogs - redundant - antag_candidates.Remove(devil) - - if(devils.len < required_enemies) - setup_error = "Not enough devil candidates" - return 0 - return 1 - - -/datum/game_mode/devil/post_setup() - for(var/datum/mind/devil in devils) - post_setup_finalize(devil) - ..() - return 1 - -/datum/game_mode/devil/generate_report() - return "Infernal creatures have been seen nearby offering great boons in exchange for souls. This is considered theft against Nanotrasen, as all employment contracts contain a lien on the \ - employee's soul. If anyone sells their soul in error, contact an attorney to overrule the sale. Be warned that if the devil purchases enough souls, a gateway to hell may open." - -/datum/game_mode/devil/proc/post_setup_finalize(datum/mind/devil) - add_devil(devil.current, ascendable = TRUE) //Devil gamemode devils are ascendable. - add_devil_objectives(devil,2) - -/proc/is_devil(mob/living/M) - return M?.mind?.has_antag_datum(/datum/antagonist/devil) - -/proc/add_devil(mob/living/L, ascendable = FALSE) - if(!L || !L.mind) - return FALSE - var/datum/antagonist/devil/devil_datum = L.mind.add_antag_datum(/datum/antagonist/devil) - devil_datum.ascendable = ascendable - return devil_datum - -/proc/remove_devil(mob/living/L) - if(!L || !L.mind) - return FALSE - var/datum/antagonist/devil_datum = L.mind.has_antag_datum(/datum/antagonist/devil) - devil_datum.on_removal() - return TRUE - -/datum/game_mode/devil/generate_credit_text() - var/list/round_credits = list() - var/len_before_addition - - round_credits += "

The Tempting Devils:

" - len_before_addition = round_credits.len - var/datum/antagonist/devil/devil_info - for(var/datum/mind/devil in devils) - devil_info = devil.has_antag_datum(/datum/antagonist/devil) - if(devil_info) // This should never fail, but better to be sure - round_credits += "

[devil_info.truename] in the form of [devil.name]

" - devil_info = null - if(len_before_addition == round_credits.len) - round_credits += list("

The devils were all utterly destroyed!

", "

The love of Space Jesus shines through!

") - round_credits += "
" - - round_credits += ..() - return round_credits diff --git a/code/game/gamemodes/devil/game_mode.dm b/code/game/gamemodes/devil/game_mode.dm deleted file mode 100644 index eca95a011310..000000000000 --- a/code/game/gamemodes/devil/game_mode.dm +++ /dev/null @@ -1,16 +0,0 @@ -/datum/game_mode - var/list/datum/mind/devils = list() - var/devil_ascended = 0 // Number of arch devils on station - -/datum/game_mode/proc/add_devil_objectives(datum/mind/devil_mind, quantity) - var/list/validtypes = list(/datum/objective/devil/soulquantity, /datum/objective/devil/soulquality, /datum/objective/devil/sintouch, /datum/objective/devil/buy_target) - var/datum/antagonist/devil/D = devil_mind.has_antag_datum(/datum/antagonist/devil) - for(var/i = 1 to quantity) - var/type = pick(validtypes) - var/datum/objective/devil/objective = new type(null) - objective.owner = devil_mind - D.objectives += objective - if(!istype(objective, /datum/objective/devil/buy_target)) - validtypes -= type //prevent duplicate objectives, EXCEPT for buy_target. - else - objective.find_target() diff --git a/code/game/gamemodes/devil/objectives.dm b/code/game/gamemodes/devil/objectives.dm deleted file mode 100644 index 2ded4c5f1c8f..000000000000 --- a/code/game/gamemodes/devil/objectives.dm +++ /dev/null @@ -1,121 +0,0 @@ -/datum/objective/devil - -/datum/objective/devil/soulquantity - explanation_text = "You shouldn't see this text. Error:DEVIL1" - target_amount = 4 - -/datum/objective/devil/soulquantity/New() - target_amount = pick(6,7,8) - update_explanation_text() - -/datum/objective/devil/soulquantity/update_explanation_text() - explanation_text = "Purchase, and retain control over at least [target_amount] souls." - -/datum/objective/devil/soulquantity/check_completion() - if(..()) - return TRUE - var/count = 0 - var/datum/antagonist/devil/devilDatum = owner.has_antag_datum(/datum/antagonist/devil) - var/list/souls = devilDatum.soulsOwned - for(var/S in souls) //Just a sanity check. - var/datum/mind/L = S - if(L.soulOwner == owner) - count++ - return count >= target_amount - - - -/datum/objective/devil/soulquality - explanation_text = "You shouldn't see this text. Error:DEVIL2" - var/contractType - var/contractName - -/datum/objective/devil/soulquality/New() - contractType = pick(CONTRACT_POWER, CONTRACT_WEALTH, CONTRACT_PRESTIGE, CONTRACT_MAGIC, CONTRACT_REVIVE, CONTRACT_KNOWLEDGE/*, CONTRACT_UNWILLING*/) - target_amount = pick(1,2) - switch(contractType) - if(CONTRACT_POWER) - contractName = "for power" - if(CONTRACT_WEALTH) - contractName = "for wealth" - if(CONTRACT_PRESTIGE) - contractName = "for prestige" - if(CONTRACT_MAGIC) - contractName = "for magic" - if(CONTRACT_REVIVE) - contractName = "of revival" - if(CONTRACT_KNOWLEDGE) - contractName = "for knowledge" - update_explanation_text() - -/datum/objective/devil/soulquality/update_explanation_text() - explanation_text = "Have mortals sign at least [target_amount] contracts [contractName]" - -/datum/objective/devil/soulquality/check_completion() - if(..()) - return TRUE - var/count = 0 - var/datum/antagonist/devil/devilDatum = owner.has_antag_datum(/datum/antagonist/devil) - var/list/souls = devilDatum.soulsOwned - for(var/S in souls) - var/datum/mind/L = S - if(!L.owns_soul() && L.damnation_type == contractType) - count++ - return count>=target_amount - - - -/datum/objective/devil/sintouch - explanation_text = "You shouldn't see this text. Error:DEVIL3" - -/datum/objective/devil/sintouch/New() - target_amount = pick(4,5) - explanation_text = "Ensure at least [target_amount] mortals are sintouched." - -/datum/objective/devil/sintouch/check_completion() - if(..()) - return TRUE - var/list/touched = get_antag_minds(/datum/antagonist/sintouched) - return touched.len >= target_amount - - -/datum/objective/devil/buy_target - explanation_text = "You shouldn't see this text. Error:DEVIL4" - -/datum/objective/devil/buy_target/update_explanation_text() - if(target) - explanation_text = "Purchase and retain the soul of [target.name], the [target.assigned_role]." - else - explanation_text = "Free objective." - -/datum/objective/devil/buy_target/check_completion() - return target.soulOwner == owner - - -/datum/objective/devil/outsell - explanation_text = "You shouldn't see this text. Error:DEVIL5" - -/datum/objective/devil/outsell/New() - -/datum/objective/devil/outsell/update_explanation_text() - var/datum/antagonist/devil/opponent = target.has_antag_datum(/datum/antagonist/devil) - explanation_text = "Purchase and retain control over more souls than [opponent.truename], known to mortals as [target.name], the [target.assigned_role]." - -/datum/objective/devil/outsell/check_completion() - if(..()) - return TRUE - var/selfcount = 0 - var/datum/antagonist/devil/devilDatum = owner.has_antag_datum(/datum/antagonist/devil) - var/list/souls = devilDatum.soulsOwned - for(var/S in souls) - var/datum/mind/L = S - if(L.soulOwner == owner) - selfcount++ - var/targetcount = 0 - devilDatum = target.has_antag_datum(/datum/antagonist/devil) - souls = devilDatum.soulsOwned - for(var/S in souls) - var/datum/mind/L = S - if(L.soulOwner == target) - targetcount++ - return selfcount > targetcount diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 109fb635805a..8c0e6ff1c1f8 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -688,59 +688,6 @@ V.assigned_role = "Clown Operative" V.special_role = "Clown Operative" -////////////////////////////////////////////// -// // -// DEVIL // -// // -////////////////////////////////////////////// - -/datum/dynamic_ruleset/roundstart/devil - name = "Devil" - antag_flag = ROLE_DEVIL - antag_datum = /datum/antagonist/devil - restricted_roles = list("Lawyer", "Curator", "Chaplain", "Head of Security", "Captain", "AI") - required_candidates = 1 - weight = 1 - cost = 60 - flags = LONE_RULESET - requirements = list(101,101,101,101,101,101,101,101,101,101) - antag_cap = list("denominator" = 30) - minimum_players = 25 - -/datum/dynamic_ruleset/roundstart/devil/pre_execute(population) - . = ..() - var/num_devils = get_antag_cap(population) * (scaled_times + 1) - - for(var/j = 0, j < num_devils, j++) - if (!candidates.len) - break - var/mob/devil = pick_n_take(candidates) - assigned += devil.mind - devil.mind.special_role = ROLE_DEVIL - devil.mind.restricted_roles = restricted_roles - - log_game("[key_name(devil)] has been selected as a devil") - return TRUE - -/datum/dynamic_ruleset/roundstart/devil/execute() - for(var/datum/mind/devil in assigned) - add_devil(devil.current, ascendable = TRUE) - add_devil_objectives(devil,2) - return TRUE - -/datum/dynamic_ruleset/roundstart/devil/proc/add_devil_objectives(datum/mind/devil_mind, quantity) - var/list/validtypes = list(/datum/objective/devil/soulquantity, /datum/objective/devil/soulquality, /datum/objective/devil/sintouch, /datum/objective/devil/buy_target) - var/datum/antagonist/devil/D = devil_mind.has_antag_datum(/datum/antagonist/devil) - for(var/i = 1 to quantity) - var/type = pick(validtypes) - var/datum/objective/devil/objective = new type(null) - objective.owner = devil_mind - D.objectives += objective - if(!istype(objective, /datum/objective/devil/buy_target)) - validtypes -= type - else - objective.find_target() - ////////////////////////////////////////////// // // // MONKEY // diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index f2402efb8b25..58551454cfe6 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -329,7 +329,7 @@ GLOBAL_VAR_INIT(clones, 0) var/datum/bank_account/D = SSeconomy.get_dep_account(payment_department) if(D) D.adjust_money(fair_market_price) - if(mob_occupant && (mob_occupant.stat == DEAD) || (mob_occupant.suiciding) || mob_occupant.hellbound) //Autoeject corpses and suiciding dudes. + if(mob_occupant && (mob_occupant.stat == DEAD) || (mob_occupant.suiciding) || (mob_occupant.mind && HAS_TRAIT(mob_occupant.mind, TRAIT_HELLBOUND))) //Autoeject corpses and suiciding dudes. connected_message("Clone Rejected: Deceased.") if(internal_radio) SPEAK("The cloning of [mob_occupant.real_name] has been \ diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index b5ca55cbf96c..538508e2d70f 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1,7 +1,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/item/storage/box/snappops = 2, /obj/item/toy/talking/AI = 2, - /obj/item/toy/talking/codex_gigas = 2, + /obj/item/toy/codex_gigas = 2, /obj/item/clothing/under/syndicate/tacticool = 2, /obj/item/toy/sword = 2, /obj/item/twohanded/vxtvulhammer/toy = 2, diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index f2de6d295cd9..d2bb87fc3fe6 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -627,7 +627,7 @@ if(!istype(dna)) scantemp = "Unable to locate valid genetic data." return FALSE - if(!body_only && (mob_occupant.suiciding || mob_occupant.hellbound)) + if(!body_only && (mob_occupant.suiciding || (mob_occupant.mind && HAS_TRAIT(mob_occupant.mind, TRAIT_HELLBOUND)))) scantemp = "Subject's brain is not responding to scanning stimuli." return FALSE if(HAS_TRAIT(mob_occupant, TRAIT_BADDNA)) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 2a2b909299ed..af7bd89d0142 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -294,7 +294,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) return INITIALIZE_HINT_QDEL //objects with the stationloving component (nuke disk) respawn here. -//also blobs that have their spawn forcemoved (running out of time when picking their spawn spot), santa and respawning devils +//also blobs that have their spawn forcemoved (running out of time when picking their spawn spot) and santa /obj/effect/landmark/blobstart name = "blobstart" icon_state = "blob_start" diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm index 2e8d62b28371..b440f4a71a8d 100644 --- a/code/game/objects/items/AI_modules.dm +++ b/code/game/objects/items/AI_modules.dm @@ -49,7 +49,7 @@ AI MODULES //Handle the lawcap if(law_datum) var/tot_laws = 0 - for(var/lawlist in list(law_datum.devillaws, law_datum.inherent, law_datum.supplied, law_datum.ion, law_datum.hacked, laws)) + for(var/lawlist in list(law_datum.inherent, law_datum.supplied, law_datum.ion, law_datum.hacked, laws)) for(var/mylaw in lawlist) if(mylaw != "") tot_laws++ diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 46ffad89b726..06d00128157f 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -586,7 +586,7 @@ if (H.suiciding) failed = span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile.") - else if (H.hellbound) + else if (H.mind && HAS_TRAIT(H.mind, TRAIT_HELLBOUND)) failed = span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's soul unrecoverable. Further attempts futile.") else if(total_burn >= MAX_REVIVE_FIRE_DAMAGE || total_brute >= MAX_REVIVE_BRUTE_DAMAGE) failed = span_boldnotice("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Severe tissue damage makes recovery of patient impossible via defibrillator. Surgical repair may allow for successful resuscitation.") diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index b7dbd2c8e38e..2e743275473d 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -584,6 +584,14 @@ icon_state = "reticenceprize" quiet = 1 +/obj/item/toy/codex_gigas + name = "Toy Codex Gigas" + desc = "A tool to help you write fictional devils!" + icon = 'icons/obj/library.dmi' + icon_state = "demonomicon" + lefthand_file = 'icons/mob/inhands/misc/books_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/books_righthand.dmi' + w_class = WEIGHT_CLASS_SMALL /obj/item/toy/talking name = "talking action figure" @@ -645,32 +653,6 @@ /obj/item/toy/talking/AI/generate_messages() return list(generate_ion_law()) -/obj/item/toy/talking/codex_gigas - name = "Toy Codex Gigas" - desc = "A tool to help you write fictional devils!" - icon = 'icons/obj/library.dmi' - icon_state = "demonomicon" - lefthand_file = 'icons/mob/inhands/misc/books_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/books_righthand.dmi' - w_class = WEIGHT_CLASS_SMALL - recharge_time = 60 - -/obj/item/toy/talking/codex_gigas/activation_message(mob/user) - user.visible_message( - span_notice("[user] presses the button on \the [src]."), - span_notice("You press the button on \the [src]."), - span_notice("You hear a soft click.")) - -/obj/item/toy/talking/codex_gigas/generate_messages() - var/datum/fakeDevil/devil = new - var/list/messages = list() - messages += "Some fun facts about: [devil.truename]" - messages += "[GLOB.lawlorify[LORE][devil.bane]]" - messages += "[GLOB.lawlorify[LORE][devil.obligation]]" - messages += "[GLOB.lawlorify[LORE][devil.ban]]" - messages += "[GLOB.lawlorify[LORE][devil.banish]]" - return messages - /obj/item/toy/talking/owl name = "owl action figure" desc = "An action figure modeled after 'The Owl', defender of justice." diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index ec890b100ebf..1e46e7db0199 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -849,64 +849,6 @@ throwforce = 23 force_wielded = 6 -/obj/item/twohanded/pitchfork/demonic - name = "demonic pitchfork" - desc = "A red pitchfork, it looks like the work of the devil." - force = 19 - throwforce = 24 - force_wielded = 6 - light_system = MOVABLE_LIGHT - light_range = 3 - light_power = 6 - light_color = LIGHT_COLOR_RED - -/obj/item/twohanded/pitchfork/demonic/greater - force = 24 - throwforce = 50 - force_wielded = 10 - -/obj/item/twohanded/pitchfork/demonic/ascended - force = 100 - throwforce = 100 - force_wielded = 500000 // Kills you DEAD. - -/obj/item/twohanded/pitchfork/update_icon() - icon_state = "pitchfork[wielded]" - -/obj/item/twohanded/pitchfork/suicide_act(mob/user) - user.visible_message(span_suicide("[user] impales [user.p_them()]self in [user.p_their()] abdomen with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) - return (BRUTELOSS) - -/obj/item/twohanded/pitchfork/demonic/pickup(mob/living/user) - . = ..() - if(isliving(user) && user.mind && user.owns_soul() && !is_devil(user)) - var/mob/living/U = user - U.visible_message(span_warning("As [U] picks [src] up, [U]'s arms briefly catch fire."), \ - span_warning("\"As you pick up [src] your arms ignite, reminding you of all your past sins.\"")) - if(ishuman(U)) - var/mob/living/carbon/human/H = U - H.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - else - U.adjustFireLoss(rand(force/2,force)) - -/obj/item/twohanded/pitchfork/demonic/attack(mob/target, mob/living/carbon/human/user) - if(user.mind && user.owns_soul() && !is_devil(user)) - to_chat(user, "[src] burns in your hands.") - user.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - ..() - -/obj/item/twohanded/pitchfork/demonic/ascended/afterattack(atom/target, mob/user, proximity) - . = ..() - if(!proximity || !wielded) - return - if(iswallturf(target)) - var/turf/closed/wall/W = target - user.visible_message(span_danger("[user] blasts \the [target] with \the [src]!")) - playsound(target, 'sound/magic/disintegrate.ogg', 100, 1) - W.break_wall() - W.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) - return - //HF blade /obj/item/twohanded/vibro_weapon diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index e6923a09f890..b641ee426890 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -407,48 +407,6 @@ new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src)) ..() -/obj/effect/mob_spawn/human/demonic_friend - name = "Essence of friendship" - desc = "Oh boy! Oh boy! A friend!" - mob_name = "Demonic friend" - icon = 'icons/obj/cardboard_cutout.dmi' - icon_state = "cutout_basic" - outfit = /datum/outfit/demonic_friend - death = FALSE - roundstart = FALSE - random = TRUE - id_job = "SuperFriend" - id_access = "assistant" - var/datum/action/cooldown/spell/summon_friend/spell - var/datum/mind/owner - assignedrole = "SuperFriend" - -/obj/effect/mob_spawn/human/demonic_friend/Initialize(mapload, datum/mind/owner_mind, datum/action/cooldown/spell/summon_friend/summoning_spell) - . = ..() - owner = owner_mind - flavour_text = "You have been given a reprieve from your eternity of torment, to be [owner.name]'s friend for [owner.p_their()] short mortal coil." - important_info = "Be aware that if you do not live up to [owner.name]'s expectations, they can send you back to hell with a single thought. [owner.name]'s death will also return you to hell." - var/area/A = get_area(src) - if(!mapload && A) - notify_ghosts("\A friendship shell has been completed in \the [A.name].", source = src, action=NOTIFY_ATTACKORBIT, flashwindow = FALSE) - objectives = "Be [owner.name]'s friend, and keep [owner.name] alive, so you don't get sent back to hell." - spell = summoning_spell - -/obj/effect/mob_spawn/human/demonic_friend/special(mob/living/L) - if(!QDELETED(owner.current) && owner.current.stat != DEAD) - L.fully_replace_character_name(null,"[owner.name]'s best friend") - soullink(/datum/soullink/oneway, owner.current, L) - spell.friend = L - L.mind.hasSoul = FALSE - var/mob/living/carbon/human/H = L - var/obj/item/worn = H.wear_id - var/obj/item/card/id/id = worn.GetID() - id.registered_name = L.real_name - id.update_label() - else - to_chat(L, span_userdanger("Your owner is already dead! You will soon perish.")) - addtimer(CALLBACK(L, TYPE_PROC_REF(/mob, dust), 150)) //Give em a few seconds as a mercy. - /datum/outfit/demonic_friend name = "Demonic Friend" uniform = /obj/item/clothing/under/assistantformal diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index f02d14fe7fe4..107cbe9354cb 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -188,7 +188,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an for(var/mob/living/M in compiled) var/mob/living/mob_occupant = get_mob_or_brainmob(M) - if(mob_occupant.client && !mob_occupant.suiciding && !(HAS_TRAIT(mob_occupant, TRAIT_BADDNA)) && !mob_occupant.hellbound) + if(mob_occupant.client && !mob_occupant.suiciding && !(HAS_TRAIT(mob_occupant, TRAIT_BADDNA)) && !(mob_occupant.mind && HAS_TRAIT(mob_occupant.mind, TRAIT_HELLBOUND))) icon_state = "morgue4" // Cloneable if(mob_occupant.stat == DEAD && beeper) if(world.time > next_beep) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 94a5b4ed4d58..83f1b65b2749 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -837,22 +837,6 @@ if(!ai_number) to_chat(usr, "No AIs located" , confidential=TRUE) -/datum/admins/proc/output_all_devil_info() - var/devil_number = 0 - for(var/datum/mind/D in SSticker.mode.devils) - devil_number++ - var/datum/antagonist/devil/devil = D.has_antag_datum(/datum/antagonist/devil) - to_chat(usr, "Devil #[devil_number]:

" + devil.printdevilinfo(), confidential=TRUE) - if(!devil_number) - to_chat(usr, "No Devils located" , confidential=TRUE) - -/datum/admins/proc/output_devil_info(mob/living/M) - if(is_devil(M)) - var/datum/antagonist/devil/devil = M.mind.has_antag_datum(/datum/antagonist/devil) - to_chat(usr, devil.printdevilinfo(), confidential=TRUE) - else - to_chat(usr, "[M] is not a devil.", confidential=TRUE) - /datum/admins/proc/manage_free_slots() if(!check_rights()) return diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index da6408ac1485..25e7e21cec36 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -295,7 +295,7 @@ "Ghost and Other Roles" = list(ROLE_BRAINWASHED, ROLE_DEATHSQUAD, ROLE_DRONE, ROLE_FUGITIVE, ROLE_HOLOPARASITE, ROLE_HORROR, ROLE_LAVALAND, ROLE_MIND_TRANSFER, ROLE_POSIBRAIN, ROLE_SENTIENCE, ROLE_MOUSE, ROLE_GOLEM, ROLE_GHOSTBEACON), "Antagonist Positions" = list(ROLE_ABDUCTOR, ROLE_ALIEN, ROLE_BLOB, ROLE_BLOODSUCKER, ROLE_BROTHER, ROLE_CHANGELING, ROLE_CULTIST, - ROLE_DEVIL, ROLE_FUGITIVE, ROLE_HOLOPARASITE, ROLE_INTERNAL_AFFAIRS, ROLE_MALF, + ROLE_FUGITIVE, ROLE_HOLOPARASITE, ROLE_INTERNAL_AFFAIRS, ROLE_MALF, ROLE_MONKEY, ROLE_MONSTERHUNTER, ROLE_NINJA, ROLE_OPERATIVE, ROLE_REV, ROLE_REVENANT, ROLE_SINFULDEMON, ROLE_REV_HEAD, ROLE_SERVANT_OF_RATVAR, ROLE_SYNDICATE, diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 57f6fbf87d68..bf8211330027 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1303,12 +1303,6 @@ return output_ai_laws() - else if(href_list["admincheckdevilinfo"]) - if(!check_rights(R_ADMIN)) - return - var/mob/M = locate(href_list["admincheckdevilinfo"]) - output_devil_info(M) - else if(href_list["adminmoreinfo"]) var/mob/M = locate(href_list["adminmoreinfo"]) in GLOB.mob_list adminmoreinfo(M) diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm deleted file mode 100644 index e44f93d7628e..000000000000 --- a/code/modules/antagonists/devil/devil.dm +++ /dev/null @@ -1,601 +0,0 @@ -#define BLOOD_THRESHOLD 3 //How many souls are needed per stage. -#define TRUE_THRESHOLD 7 -#define ARCH_THRESHOLD 12 - -#define BASIC_DEVIL 0 -#define BLOOD_LIZARD 1 -#define TRUE_DEVIL 2 -#define ARCH_DEVIL 3 - -#define LOSS_PER_DEATH 2 - -#define SOULVALUE soulsOwned.len-reviveNumber - -#define DEVILRESURRECTTIME 60 SECONDS - -GLOBAL_LIST_EMPTY(allDevils) -GLOBAL_LIST_INIT(lawlorify, list ( - LORE = list( - OBLIGATION_FOOD = "This devil seems to always offer its victims food before slaughtering them.", - OBLIGATION_FIDDLE = "This devil will never turn down a musical challenge.", - OBLIGATION_DANCEOFF = "This devil will never turn down a dance off.", - OBLIGATION_GREET = "This devil seems to only be able to converse with people it knows the name of.", - OBLIGATION_PRESENCEKNOWN = "This devil seems to be unable to attack from stealth.", - OBLIGATION_SAYNAME = "He will always chant his name upon killing someone.", - OBLIGATION_ANNOUNCEKILL = "This devil always loudly announces his kills for the world to hear.", - OBLIGATION_ANSWERTONAME = "This devil always responds to his truename.", - BANE_SILVER = "Silver seems to gravely injure this devil.", - BANE_SALT = "Throwing salt at this devil will hinder his ability to use infernal powers temporarily.", - BANE_LIGHT = "Bright flashes will disorient the devil, likely causing him to flee.", - BANE_IRON = "Cold iron will slowly injure him, until he can purge it from his system.", - BANE_WHITECLOTHES = "Wearing clean white clothing will help ward off this devil.", - BANE_HARVEST = "Presenting the labors of a harvest will disrupt the devil.", - BANE_TOOLBOX = "That which holds the means of creation also holds the means of the devil's undoing.", - BAN_HURTWOMAN = "This devil seems to prefer hunting men.", - BAN_CHAPEL = "This devil avoids holy ground.", - BAN_HURTPRIEST = "The annointed clergy appear to be immune to his powers.", - BAN_AVOIDWATER = "The devil seems to have some sort of aversion to water, though it does not appear to harm him.", - BAN_STRIKEUNCONSCIOUS = "This devil only shows interest in those who are awake.", - BAN_HURTLIZARD = "This devil will not strike a lizardman first.", - BAN_HURTANIMAL = "This devil avoids hurting animals.", - BANISH_WATER = "To banish the devil, you must infuse its body with holy water.", - BANISH_COFFIN = "This devil will return to life if its remains are not placed within a coffin.", - BANISH_FORMALDYHIDE = "To banish the devil, you must inject its lifeless body with embalming fluid.", - BANISH_RUNES = "This devil will resurrect after death, unless its remains are within a rune.", - BANISH_CANDLES = "A large number of nearby lit candles will prevent it from resurrecting.", - BANISH_DESTRUCTION = "Its corpse must be utterly destroyed to prevent resurrection.", - BANISH_FUNERAL_GARB = "If clad in funeral garments, this devil will be unable to resurrect. Should the clothes not fit, lay them gently on top of the devil's corpse." - ), - LAW = list( - OBLIGATION_FOOD = "When not acting in self defense, you must always offer your victim food before harming them.", - OBLIGATION_FIDDLE = "When not in immediate danger, if you are challenged to a musical duel, you must accept it. You are not obligated to duel the same person twice.", - OBLIGATION_DANCEOFF = "When not in immediate danger, if you are challenged to a dance off, you must accept it. You are not obligated to face off with the same person twice.", - OBLIGATION_GREET = "You must always greet other people by their last name before talking with them.", - OBLIGATION_PRESENCEKNOWN = "You must always make your presence known before attacking.", - OBLIGATION_SAYNAME = "You must always say your true name after you kill someone.", - OBLIGATION_ANNOUNCEKILL = "Upon killing someone, you must make your deed known to all within earshot, over comms if reasonably possible.", - OBLIGATION_ANSWERTONAME = "If you are not under attack, you must always respond to your true name.", - BAN_HURTWOMAN = "You must never harm a female outside of self defense.", - BAN_CHAPEL = "You must never attempt to enter the chapel.", - BAN_HURTPRIEST = "You must never attack a priest.", - BAN_AVOIDWATER = "You must never willingly touch a wet surface.", - BAN_STRIKEUNCONSCIOUS = "You must never strike an unconscious person.", - BAN_HURTLIZARD = "You must never harm a lizardman outside of self defense.", - BAN_HURTANIMAL = "You must never harm a non-sentient creature or robot outside of self defense.", - BANE_SILVER = "Silver, in all of its forms shall be your downfall.", - BANE_SALT = "Salt will disrupt your magical abilities.", - BANE_LIGHT = "Blinding lights will prevent you from using offensive powers for a time.", - BANE_IRON = "Cold wrought iron shall act as poison to you.", - BANE_WHITECLOTHES = "Those clad in pristine white garments will strike you true.", - BANE_HARVEST = "The fruits of the harvest shall be your downfall.", - BANE_TOOLBOX = "Toolboxes are bad news for you, for some reason.", - BANISH_WATER = "If your corpse is filled with holy water, you will be unable to resurrect.", - BANISH_COFFIN = "If your corpse is in a coffin, you will be unable to resurrect.", - BANISH_FORMALDYHIDE = "If your corpse is embalmed, you will be unable to resurrect.", - BANISH_RUNES = "If your corpse is placed within a rune, you will be unable to resurrect.", - BANISH_CANDLES = "If your corpse is near lit candles, you will be unable to resurrect.", - BANISH_DESTRUCTION = "If your corpse is destroyed, you will be unable to resurrect.", - BANISH_FUNERAL_GARB = "If your corpse is clad in funeral garments, you will be unable to resurrect." - ) - )) - -//These are also used in the codex gigas, so let's declare them globally. -GLOBAL_LIST_INIT(devil_pre_title, list("Dark ", "Hellish ", "Fallen ", "Fiery ", "Sinful ", "Blood ", "Fluffy ")) -GLOBAL_LIST_INIT(devil_title, list("Lord ", "Prelate ", "Count ", "Viscount ", "Vizier ", "Elder ", "Adept ")) -GLOBAL_LIST_INIT(devil_syllable, list("hal", "ve", "odr", "neit", "ci", "quon", "mya", "folth", "wren", "geyr", "hil", "niet", "twou", "phi", "coa")) -GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", ", the Lord of all things", ", Jr.")) - -/* - * Datum - */ -/datum/antagonist/devil - name = "Devil" - roundend_category = "devils" - antagpanel_category = "Devil" - job_rank = ROLE_DEVIL - antag_hud_name = "devil" - show_to_ghosts = TRUE - var/obligation - var/ban - var/bane - var/banish - var/truename - var/list/datum/mind/soulsOwned = new - var/reviveNumber = 0 - var/form = BASIC_DEVIL - var/static/list/devil_spells = typecacheof(list( - /datum/action/cooldown/spell/pointed/projectile/fireball/hellish, - /datum/action/cooldown/spell/conjure_item/summon_pitchfork, - /datum/action/cooldown/spell/conjure_item/summon_pitchfork/greater, - /datum/action/cooldown/spell/conjure_item/summon_pitchfork/ascended, - /datum/action/cooldown/spell/jaunt/infernal_jaunt, - /datum/action/cooldown/spell/aoe/sintouch, - /datum/action/cooldown/spell/aoe/sintouch/ascended, - /datum/action/cooldown/spell/pointed/summon_contract, - /datum/action/cooldown/spell/conjure_item/violin, - /datum/action/cooldown/spell/summon_dancefloor)) - var/ascendable = FALSE - -/datum/antagonist/devil/can_be_owned(datum/mind/new_owner) - . = ..() - return . && (ishuman(new_owner.current) || iscyborg(new_owner.current)) - -/datum/antagonist/devil/get_admin_commands() - . = ..() - .["Toggle ascendable"] = CALLBACK(src, PROC_REF(admin_toggle_ascendable)) - - -/datum/antagonist/devil/proc/admin_toggle_ascendable(mob/admin) - ascendable = !ascendable - message_admins("[key_name_admin(admin)] set [key_name_admin(owner)] devil ascendable to [ascendable]") - log_admin("[key_name_admin(admin)] set [key_name(owner)] devil ascendable to [ascendable])") - -/datum/antagonist/devil/admin_add(datum/mind/new_owner,mob/admin) - switch(alert(admin,"Should the devil be able to ascend",,"Yes","No","Cancel")) - if("Yes") - ascendable = TRUE - if("No") - ascendable = FALSE - else - return - new_owner.add_antag_datum(src) - message_admins("[key_name_admin(admin)] has devil'ed [key_name_admin(new_owner)]. [ascendable ? "(Ascendable)":""]") - log_admin("[key_name(admin)] has devil'ed [key_name(new_owner)]. [ascendable ? "(Ascendable)":""]") - -/datum/antagonist/devil/antag_listing_name() - return ..() + "([truename])" - -/proc/devilInfo(name) - if(GLOB.allDevils[lowertext(name)]) - return GLOB.allDevils[lowertext(name)] - else - var/datum/fakeDevil/devil = new /datum/fakeDevil(name) - GLOB.allDevils[lowertext(name)] = devil - return devil - -/proc/randomDevilName() - var/name = "" - if(prob(65)) - if(prob(35)) - name = pick(GLOB.devil_pre_title) - name += pick(GLOB.devil_title) - var/probability = 100 - name += pick(GLOB.devil_syllable) - while(prob(probability)) - name += pick(GLOB.devil_syllable) - probability -= 20 - if(prob(40)) - name += pick(GLOB.devil_suffix) - return name - -/proc/randomdevilobligation() - return pick(OBLIGATION_FOOD, OBLIGATION_FIDDLE, OBLIGATION_DANCEOFF, OBLIGATION_GREET, OBLIGATION_PRESENCEKNOWN, OBLIGATION_SAYNAME, OBLIGATION_ANNOUNCEKILL, OBLIGATION_ANSWERTONAME) - -/proc/randomdevilban() - return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONSCIOUS, BAN_HURTLIZARD, BAN_HURTANIMAL) - -/proc/randomdevilbane() - return pick(BANE_SALT, BANE_LIGHT, BANE_IRON, BANE_WHITECLOTHES, BANE_SILVER, BANE_HARVEST, BANE_TOOLBOX) - -/proc/randomdevilbanish() - return pick(BANISH_WATER, BANISH_COFFIN, BANISH_FORMALDYHIDE, BANISH_RUNES, BANISH_CANDLES, BANISH_DESTRUCTION, BANISH_FUNERAL_GARB) - -/datum/antagonist/devil/proc/add_soul(datum/mind/soul) - if(soulsOwned.Find(soul)) - return - soulsOwned += soul - owner.current.set_nutrition(NUTRITION_LEVEL_FULL) - to_chat(owner.current, span_warning("You feel satiated as you received a new soul.")) - update_hud() - switch(SOULVALUE) - if(0) - to_chat(owner.current, span_warning("Your hellish powers have been restored.")) - give_appropriate_spells() - if(BLOOD_THRESHOLD) - increase_blood_lizard() - if(TRUE_THRESHOLD) - increase_true_devil() - if(ARCH_THRESHOLD) - increase_arch_devil() - -/datum/antagonist/devil/proc/remove_soul(datum/mind/soul) - if(soulsOwned.Remove(soul)) - check_regression() - to_chat(owner.current, span_warning("You feel as though a soul has slipped from your grasp.")) - update_hud() - -/datum/antagonist/devil/proc/check_regression() - if(form == ARCH_DEVIL) - return //arch devil can't regress - //Yes, fallthrough behavior is intended, so I can't use a switch statement. - if(form == TRUE_DEVIL && SOULVALUE < TRUE_THRESHOLD) - regress_blood_lizard() - if(form == BLOOD_LIZARD && SOULVALUE < BLOOD_THRESHOLD) - regress_humanoid() - if(SOULVALUE < 0) - give_appropriate_spells() - to_chat(owner.current, span_warning("As punishment for your failures, all of your powers except contract creation have been revoked.")) - -/datum/antagonist/devil/proc/regress_humanoid() - to_chat(owner.current, span_warning("Your powers weaken, have more contracts be signed to regain power.")) - if(ishuman(owner.current)) - var/mob/living/carbon/human/H = owner.current - - var/species_type = owner.current.client.prefs.read_preference(/datum/preference/choiced/species) - H.set_species(species_type, 1) - H.regenerate_icons() - give_appropriate_spells() - if(istype(owner.current.loc, /obj/effect/dummy/phased_mob)) - owner.current.forceMove(get_turf(owner.current))//Fixes dying while jaunted leaving you permajaunted. - form = BASIC_DEVIL - -/datum/antagonist/devil/proc/regress_blood_lizard() - var/mob/living/carbon/true_devil/D = owner.current - to_chat(D, span_warning("Your powers weaken, have more contracts be signed to regain power.")) - D.oldform.forceMove(D.drop_location()) - owner.transfer_to(D.oldform) - give_appropriate_spells() - qdel(D) - form = BLOOD_LIZARD - update_hud() - - -/datum/antagonist/devil/proc/increase_blood_lizard() - to_chat(owner.current, span_warning("You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.")) - sleep(5 SECONDS) - if(ishuman(owner.current)) - var/mob/living/carbon/human/H = owner.current - H.set_species(/datum/species/lizard, 1) - H.underwear = "Nude" - H.undershirt = "Nude" - H.socks = "Nude" - H.dna.features["mcolor"] = "511" //A deep red - H.regenerate_icons() - else //Did the devil get hit by a staff of transmutation? - owner.current.color = "#501010" - give_appropriate_spells() - form = BLOOD_LIZARD - - - -/datum/antagonist/devil/proc/increase_true_devil() - to_chat(owner.current, span_warning("You feel as though your current form is about to shed. You will soon turn into a true devil.")) - sleep(5 SECONDS) - var/mob/living/carbon/true_devil/A = new /mob/living/carbon/true_devil(owner.current.loc) - A.faction |= "hell" - owner.current.forceMove(A) - A.oldform = owner.current - owner.transfer_to(A) - A.set_name() - give_appropriate_spells() - form = TRUE_DEVIL - update_hud() - -/datum/antagonist/devil/proc/increase_arch_devil() - if(!ascendable) - return - var/mob/living/carbon/true_devil/D = owner.current - to_chat(D, span_warning("You feel as though your form is about to ascend.")) - sleep(5 SECONDS) - if(!D) - return - D.visible_message(span_warning("[D]'s skin begins to erupt with spikes."), \ - span_warning("Your flesh begins creating a shield around yourself.")) - sleep(10 SECONDS) - if(!D) - return - D.visible_message(span_warning("The horns on [D]'s head slowly grow and elongate."), \ - span_warning("Your body continues to mutate. Your telepathic abilities grow.")) - sleep(9 SECONDS) - if(!D) - return - D.visible_message(span_warning("[D]'s body begins to violently stretch and contort."), \ - span_warning("You begin to rend apart the final barriers to ultimate power.")) - sleep(4 SECONDS) - if(!D) - return - to_chat(D, "Yes!") - sleep(1 SECONDS) - if(!D) - return - to_chat(D, "[span_big("YES!!")]") - sleep(1 SECONDS) - if(!D) - return - to_chat(D, "[span_reallybig("YE--")]") - sleep(0.1 SECONDS) - if(!D) - return - send_to_playing_players("\"SLOTH, WRATH, GLUTTONY, ACEDIA, ENVY, GREED, PRIDE! FIRES OF HELL AWAKEN!!\"") - sound_to_playing_players('sound/hallucinations/veryfar_noise.ogg') - give_appropriate_spells() - D.convert_to_archdevil() - if(istype(D.loc, /obj/effect/dummy/phased_mob)) - D.forceMove(get_turf(D))//Fixes dying while jaunted leaving you permajaunted. - var/area/A = get_area(owner.current) - if(A) - notify_ghosts("An arch devil has ascended in \the [A.name]. Reach out to the devil to be given a new shell for your soul.", source = owner.current, action=NOTIFY_ATTACK) - sleep(5 SECONDS) - if(!SSticker.mode.devil_ascended) - SSshuttle.emergency.request(null, set_coefficient = 0.3) - SSticker.mode.devil_ascended++ - form = ARCH_DEVIL - -/datum/antagonist/devil/proc/remove_spells() - for(var/datum/action/cooldown/spell/spells in owner.current.actions) - if(is_type_in_typecache(spells, devil_spells)) - spells.Remove(owner.current) - -/datum/antagonist/devil/proc/give_summon_contract() - var/datum/action/cooldown/spell/pointed/summon_contract/summon_contract = new(owner.current) - summon_contract.Grant(owner.current) - if(obligation == OBLIGATION_FIDDLE) - var/datum/action/cooldown/spell/conjure_item/violin/violin = new(owner.current) - violin.Grant(owner.current) - else if(obligation == OBLIGATION_DANCEOFF) - var/datum/action/cooldown/spell/summon_dancefloor/dance_floor = new(owner.current) - dance_floor.Grant(owner.current) - -/datum/antagonist/devil/proc/give_appropriate_spells() - remove_spells() - give_summon_contract() - if(SOULVALUE >= ARCH_THRESHOLD && ascendable) - give_arch_spells() - else if(SOULVALUE >= TRUE_THRESHOLD) - give_true_spells() - else if(SOULVALUE >= BLOOD_THRESHOLD) - give_blood_spells() - else if(SOULVALUE >= 0) - give_base_spells() - -/datum/antagonist/devil/proc/give_base_spells() - var/datum/action/cooldown/spell/pointed/projectile/fireball/hellish/fireball = new(owner.current) - fireball.Grant(owner.current) - - var/datum/action/cooldown/spell/conjure_item/summon_pitchfork/pitchfork = new(owner.current) - pitchfork.Grant(owner.current) - -/datum/antagonist/devil/proc/give_blood_spells() - var/datum/action/cooldown/spell/conjure_item/summon_pitchfork/pitchfork = new(owner.current) - pitchfork.Grant(owner.current) - - var/datum/action/cooldown/spell/pointed/projectile/fireball/hellish/fireball = new(owner.current) - fireball.Grant(owner.current) - - var/datum/action/cooldown/spell/jaunt/infernal_jaunt/jaunt = new(owner.current) - jaunt.Grant(owner.current) - -/datum/antagonist/devil/proc/give_true_spells() - var/datum/action/cooldown/spell/conjure_item/summon_pitchfork/greater/better_pitchfork = new(owner.current) - better_pitchfork.Grant(owner.current) - - var/datum/action/cooldown/spell/pointed/projectile/fireball/hellish/fireball = new(owner.current) - fireball.Grant(owner.current) - - var/datum/action/cooldown/spell/jaunt/infernal_jaunt/jaunt = new(owner.current) - jaunt.Grant(owner.current) - - var/datum/action/cooldown/spell/aoe/sintouch/sintouch = new(owner.current) - sintouch.Grant(owner.current) - -/datum/antagonist/devil/proc/give_arch_spells() - var/datum/action/cooldown/spell/conjure_item/summon_pitchfork/ascended/betterer_pitchfork = new(owner.current) - betterer_pitchfork.Grant(owner.current) - - var/datum/action/cooldown/spell/aoe/sintouch/ascended/better_sintouch = new(owner.current) - better_sintouch.Grant(owner.current) - -/datum/antagonist/devil/proc/beginResurrectionCheck(mob/living/body) - if(SOULVALUE>0) - to_chat(owner.current, span_userdanger("Your body has been damaged to the point that you may no longer use it. At the cost of some of your power, you will return to life soon. Remain in your body.")) - sleep(DEVILRESURRECTTIME) - if (!body || body.stat == DEAD) - if(SOULVALUE>0) - if(check_banishment(body)) - to_chat(owner.current, span_userdanger("Unfortunately, the mortals have finished a ritual that prevents your resurrection.")) - return -1 - else - to_chat(owner.current, span_userdanger("WE LIVE AGAIN!")) - return hellish_resurrection(body) - else - to_chat(owner.current, span_userdanger("Unfortunately, the power that stemmed from your contracts has been extinguished. You no longer have enough power to resurrect.")) - return -1 - else - to_chat(owner.current, span_danger(" You seem to have resurrected without your hellish powers.")) - else - to_chat(owner.current, span_userdanger("Your hellish powers are too weak to resurrect yourself.")) - -/datum/antagonist/devil/proc/check_banishment(mob/living/body) - switch(banish) - if(BANISH_WATER) - if(iscarbon(body)) - var/mob/living/carbon/H = body - return H.reagents.has_reagent(/datum/reagent/water/holywater) - return 0 - if(BANISH_COFFIN) - return (body && istype(body.loc, /obj/structure/closet/crate/coffin)) - if(BANISH_FORMALDYHIDE) - if(iscarbon(body)) - var/mob/living/carbon/H = body - return H.reagents.has_reagent(/datum/reagent/toxin/formaldehyde) - return 0 - if(BANISH_RUNES) - if(body) - for(var/obj/effect/decal/cleanable/crayon/R in range(0,body)) - if (R.name == "rune") - return 1 - return 0 - if(BANISH_CANDLES) - if(body) - var/count = 0 - for(var/obj/item/candle/C in range(1,body)) - count += C.lit - if(count>=4) - return 1 - return 0 - if(BANISH_DESTRUCTION) - if(body) - return 0 - return 1 - if(BANISH_FUNERAL_GARB) - if(ishuman(body)) - var/mob/living/carbon/human/H = body - if(H.w_uniform && istype(H.w_uniform, /obj/item/clothing/under/burial)) - return 1 - return 0 - else - for(var/obj/item/clothing/under/burial/B in range(0,body)) - if(B.loc == get_turf(B)) //Make sure it's not in someone's inventory or something. - return 1 - return 0 - -/datum/antagonist/devil/proc/hellish_resurrection(mob/living/body) - message_admins("[key_name_admin(owner)] (true name is: [truename]) is resurrecting using hellish energy.") - if(SOULVALUE < ARCH_THRESHOLD || !ascendable) // once ascended, arch devils do not go down in power by any means. - reviveNumber += LOSS_PER_DEATH - update_hud() - if(body) - body.revive(TRUE, TRUE) //Adminrevive also recovers organs, preventing someone from resurrecting without a heart. - if(istype(body.loc, /obj/effect/dummy/phased_mob)) - body.forceMove(get_turf(body))//Fixes dying while jaunted leaving you permajaunted. - if(istype(body, /mob/living/carbon/true_devil)) - var/mob/living/carbon/true_devil/D = body - if(D.oldform) - D.oldform.revive(1,0) // Heal the old body too, so the devil doesn't resurrect, then immediately regress into a dead body. - if(body.stat == DEAD) - create_new_body() - else - create_new_body() - check_regression() - -/datum/antagonist/devil/proc/create_new_body() - if(GLOB.blobstart.len > 0) - var/turf/targetturf = get_turf(pick(GLOB.blobstart)) - var/mob/currentMob = owner.current - if(!currentMob) - currentMob = owner.get_ghost() - if(!currentMob) - message_admins("[key_name_admin(owner)]'s devil resurrection failed due to client logoff. Aborting.") - return -1 - if(currentMob.mind != owner) - message_admins("[key_name_admin(owner)]'s devil resurrection failed due to becoming a new mob. Aborting.") - return -1 - currentMob.change_mob_type( /mob/living/carbon/human, targetturf, null, 1) - var/mob/living/carbon/human/H = owner.current - H.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/black(H), ITEM_SLOT_ICLOTHING) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), ITEM_SLOT_FEET) - H.equip_to_slot_or_del(new /obj/item/storage/briefcase(H), ITEM_SLOT_HANDS) - H.equip_to_slot_or_del(new /obj/item/pen(H), ITEM_SLOT_LPOCKET) - if(SOULVALUE >= BLOOD_THRESHOLD) - H.set_species(/datum/species/lizard, 1) - H.underwear = "Nude" - H.undershirt = "Nude" - H.socks = "Nude" - H.dna.features["mcolor"] = "511" - H.regenerate_icons() - if(SOULVALUE >= TRUE_THRESHOLD) //Yes, BOTH this and the above if statement are to run if soulpower is high enough. - var/mob/living/carbon/true_devil/A = new /mob/living/carbon/true_devil(targetturf) - A.faction |= "hell" - H.forceMove(A) - A.oldform = H - owner.transfer_to(A, TRUE) - A.set_name() - if(SOULVALUE >= ARCH_THRESHOLD && ascendable) - A.convert_to_archdevil() - give_appropriate_spells() - update_hud() - else - CRASH("Unable to find a blobstart landmark for hellish resurrection") - - -/datum/antagonist/devil/proc/update_hud() - if(iscarbon(owner.current)) - var/mob/living/C = owner.current - if(C.hud_used && C.hud_used.devilsouldisplay) - C.hud_used.devilsouldisplay.update_counter(SOULVALUE) - -/datum/antagonist/devil/greet() - to_chat(owner.current, span_warning("You remember your link to the infernal. You are [truename], an agent of hell, a devil. And you were sent to the plane of creation for a reason. A greater purpose. Convince the crew to sin, and embroiden Hell's grasp.")) - to_chat(owner.current, span_warning("However, your infernal form is not without weaknesses.")) - to_chat(owner.current, "You may not use violence to coerce someone into selling their soul.") - to_chat(owner.current, "You may not directly and knowingly physically harm a devil, other than yourself.") - to_chat(owner.current, GLOB.lawlorify[LAW][bane]) - to_chat(owner.current, GLOB.lawlorify[LAW][ban]) - to_chat(owner.current, GLOB.lawlorify[LAW][obligation]) - to_chat(owner.current, GLOB.lawlorify[LAW][banish]) - to_chat(owner.current, "[span_warning("Remember, the crew can research your weaknesses if they find out your devil name.")]
") - .=..() - -/datum/antagonist/devil/on_gain() - truename = randomDevilName() - ban = randomdevilban() - bane = randomdevilbane() - obligation = randomdevilobligation() - banish = randomdevilbanish() - GLOB.allDevils[lowertext(truename)] = src - - antag_memory += "Your devilic true name is [truename]
[GLOB.lawlorify[LAW][ban]]
You may not use violence to coerce someone into selling their soul.
You may not directly and knowingly physically harm a devil, other than yourself.
[GLOB.lawlorify[LAW][bane]]
[GLOB.lawlorify[LAW][obligation]]
[GLOB.lawlorify[LAW][banish]]
" - if(issilicon(owner.current)) - var/mob/living/silicon/robot_devil = owner.current - var/laws = list("You may not use violence to coerce someone into selling their soul.", "You may not directly and knowingly physically harm a devil, other than yourself.", GLOB.lawlorify[LAW][ban], GLOB.lawlorify[LAW][obligation], "Accomplish your objectives at all costs.") - robot_devil.set_law_sixsixsix(laws) - handle_clown_mutation(owner.current, "Your infernal nature has allowed you to overcome your clownishness.") - return ..() - -/datum/antagonist/devil/on_removal() - to_chat(owner.current, span_userdanger("Your infernal link has been severed! You are no longer a devil!")) - . = ..() - -/datum/antagonist/devil/apply_innate_effects(mob/living/mob_override) - give_appropriate_spells() - owner.current.grant_all_languages(TRUE, TRUE, TRUE, LANGUAGE_DEVIL) - update_hud() - .=..() - -/datum/antagonist/devil/remove_innate_effects(mob/living/mob_override) - for(var/datum/action/cooldown/spell/spells in owner.current.actions) - if(is_type_in_typecache(spells, devil_spells)) - spells.Remove(owner.current) - owner.current.remove_all_languages(LANGUAGE_DEVIL) - .=..() - -/datum/antagonist/devil/proc/printdevilinfo() - var/list/parts = list() - parts += "The devil's true name is: [truename]" - parts += "The devil's bans were:" - parts += "[GLOB.TAB][GLOB.lawlorify[LORE][ban]]" - parts += "[GLOB.TAB][GLOB.lawlorify[LORE][bane]]" - parts += "[GLOB.TAB][GLOB.lawlorify[LORE][obligation]]" - parts += "[GLOB.TAB][GLOB.lawlorify[LORE][banish]]" - return parts.Join("
") - -/datum/antagonist/devil/roundend_report() - var/list/parts = list() - parts += printplayer(owner) - parts += printdevilinfo() - parts += printobjectives(objectives) - return parts.Join("
") - -//A simple super light weight datum for the codex gigas. -/datum/fakeDevil - var/truename - var/bane - var/obligation - var/ban - var/banish - var/ascendable - -/datum/fakeDevil/New(name = randomDevilName()) - truename = name - bane = randomdevilbane() - obligation = randomdevilobligation() - ban = randomdevilban() - banish = randomdevilbanish() - ascendable = prob(25) - -/datum/antagonist/devil/get_preview_icon() - var/icon/devil_icon = icon('icons/effects/64x64.dmi', "devil") - - devil_icon.Scale(ANTAGONIST_PREVIEW_ICON_SIZE, ANTAGONIST_PREVIEW_ICON_SIZE) - - return devil_icon diff --git a/code/modules/antagonists/devil/devil_helpers.dm b/code/modules/antagonists/devil/devil_helpers.dm deleted file mode 100644 index ddcabde7d293..000000000000 --- a/code/modules/antagonists/devil/devil_helpers.dm +++ /dev/null @@ -1,38 +0,0 @@ -/mob/living/proc/check_devil_bane_multiplier(obj/item/weapon, mob/living/attacker) - var/datum/antagonist/devil/devilInfo = mind.has_antag_datum(/datum/antagonist/devil) - switch(devilInfo.bane) - if(BANE_WHITECLOTHES) - if(ishuman(attacker)) - var/mob/living/carbon/human/H = attacker - if(H.w_uniform && istype(H.w_uniform, /obj/item/clothing/under)) - var/obj/item/clothing/under/U = H.w_uniform - var/static/list/whiteness = list ( - /obj/item/clothing/under/color/white = 2, - /obj/item/clothing/under/rank/bartender = 1, - /obj/item/clothing/under/rank/chef = 1, - /obj/item/clothing/under/rank/chief_engineer = 1, - /obj/item/clothing/under/rank/scientist = 1, - /obj/item/clothing/under/rank/chemist = 1, - /obj/item/clothing/under/rank/chief_medical_officer = 1, - /obj/item/clothing/under/rank/geneticist = 1, - /obj/item/clothing/under/rank/virologist = 1, - /obj/item/clothing/under/rank/nursesuit = 1, - /obj/item/clothing/under/rank/medical = 1, - /obj/item/clothing/under/rank/det = 1, - /obj/item/clothing/under/suit_jacket/white = 0.5, - /obj/item/clothing/under/burial = 1 - ) - if(U && whiteness[U.type]) - src.visible_message(span_warning("[src] seems to have been harmed by the purity of [attacker]'s clothes."), span_notice("Unsullied white clothing is disrupting your form.")) - return whiteness[U.type] + 1 - if(BANE_TOOLBOX) - if(istype(weapon, /obj/item/storage/toolbox)) - src.visible_message(span_warning("The [weapon] seems unusually robust this time."), span_notice("The [weapon] is your unmaking!")) - return 2.5 // Will take four hits with a normal toolbox to crit. - if(BANE_HARVEST) - if(istype(weapon, /obj/item/reagent_containers/food/snacks/grown/)) - visible_message(span_warning("The spirits of the harvest aid in the exorcism."), span_notice("The harvest spirits are harming you.")) - Paralyze(40) - qdel(weapon) - return 2 - return 1 \ No newline at end of file diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm deleted file mode 100644 index 84d6303a0e58..000000000000 --- a/code/modules/antagonists/devil/imp/imp.dm +++ /dev/null @@ -1,76 +0,0 @@ -//////////////////The Monster - -/mob/living/simple_animal/imp - name = "imp" - real_name = "imp" - unique_name = TRUE - desc = "A large, menacing creature covered in armored black scales." - speak_emote = list("cackles") - emote_hear = list("cackles","screeches") - response_help = "thinks better of touching" - response_disarm = "flails at" - response_harm = "punches" - icon = 'icons/mob/mob.dmi' - icon_state = "imp" - icon_living = "imp" - mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) - speed = 1 - a_intent = INTENT_HARM - stop_automated_movement = 1 - status_flags = CANPUSH - attack_sound = 'sound/magic/demon_attack1.ogg' - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 250 //Weak to cold - maxbodytemp = INFINITY - faction = list("hell") - attacktext = "wildly tears into" - maxHealth = 200 - health = 200 - healable = 0 - environment_smash = ENVIRONMENT_SMASH_STRUCTURES - obj_damage = 40 - melee_damage_lower = 10 - melee_damage_upper = 15 - see_in_dark = 8 - lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - var/boost = 0 - bloodcrawl = BLOODCRAWL_EAT - var/list/consumed_mobs = list() - var/playstyle_string = "You are an imp, a mischievous creature from hell. You are the lowest rank on the hellish totem pole \ - Though you are not obligated to help, perhaps by aiding a higher ranking devil, you might just get a promotion. However, you are incapable \ - of intentionally harming a fellow devil." - -/mob/living/simple_animal/imp/Initialize(mapload) - ..() - boost = world.time + 30 - -/mob/living/simple_animal/imp/Life(seconds_per_tick = SSMOBS_DT, times_fired) - ..() - if(boostThis is [icon2html(src, user)] [src]!") - - //Left hand items - for(var/obj/item/I in held_items) - if(!(I.item_flags & ABSTRACT)) - . += "It is holding [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))]." - - //Braindead - if(!client && stat != DEAD) - . += "The devil seems to be in deep contemplation." - - //Damaged - if(stat == DEAD) - . += span_deadsay("The hellfire seems to have been extinguished, for now at least.") - else if(health < (maxHealth/10)) - . += span_warning("You can see hellfire inside its gaping wounds.") - else if(health < (maxHealth/2)) - . += span_warning("You can see hellfire inside its wounds.") - . += "" - -/mob/living/carbon/true_devil/IsAdvancedToolUser() - return 1 - -/mob/living/carbon/true_devil/resist_buckle() - if(buckled) - buckled.user_unbuckle_mob(src,src) - visible_message(span_warning("[src] easily breaks out of [p_their()] handcuffs!"), \ - span_notice("With just a thought your handcuffs fall off.")) - -/mob/living/carbon/true_devil/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE) - if(incapacitated()) - to_chat(src, span_warning("You can't do that right now!")) - return FALSE - if(be_close && !in_range(M, src)) - to_chat(src, span_warning("You are too far away!")) - return FALSE - return TRUE - -/mob/living/carbon/true_devil/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) - return 666 - -/mob/living/carbon/true_devil/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0) - if(mind && has_bane(BANE_LIGHT)) - return ..() //flashes don't stop devils UNLESS it's their bane. - -/mob/living/carbon/true_devil/soundbang_act() - return 0 - -/mob/living/carbon/true_devil/get_ear_protection() - return 2 - - -/mob/living/carbon/true_devil/attacked_by(obj/item/I, mob/living/user, def_zone) - var/weakness = check_weakness(I, user) - apply_damage(I.force * weakness, I.damtype, def_zone) - var/message_verb = "" - if(I.attack_verb && length(I.attack_verb)) - message_verb = "[pick(I.attack_verb)]" - else if(I.force) - message_verb = "attacked" - - var/attack_message = "[src] has been [message_verb] with [I]." - if(user) - user.do_attack_animation(src) - if(user in viewers(src, null)) - attack_message = "[user] has [message_verb] [src] with [I]!" - if(message_verb) - visible_message(span_danger("[attack_message]"), - span_userdanger("[attack_message]"), null, COMBAT_MESSAGE_RANGE) - return TRUE - -/mob/living/carbon/true_devil/singularity_act() - if(ascended) - return 0 - return ..() - -//ATTACK GHOST IGNORING PARENT RETURN VALUE -/mob/living/carbon/true_devil/attack_ghost(mob/dead/observer/user as mob) - if(ascended || user.mind.soulOwner == src.mind) - var/mob/living/simple_animal/imp/S = new(get_turf(loc)) - S.key = user.key - var/datum/antagonist/imp/A = new() - S.mind.add_antag_datum(A) - to_chat(S, S.playstyle_string) - else - return ..() - -/mob/living/carbon/true_devil/can_be_revived() - return 1 - -/mob/living/carbon/true_devil/resist_fire() - //They're immune to fire. - -/mob/living/carbon/true_devil/attack_hand(mob/living/carbon/human/M) - . = ..() - if(.) - switch(M.a_intent) - if (INTENT_HARM) - var/damage = rand(1, 5) - playsound(loc, "punch", 25, 1, -1) - visible_message(span_danger("[M] has punched [src]!"), \ - span_userdanger("[M] has punched [src]!")) - adjustBruteLoss(damage) - log_combat(M, src, "attacked") - updatehealth() - if (INTENT_DISARM) - if (!(mobility_flags & MOBILITY_STAND) && !ascended) //No stealing the arch devil's pitchfork. - if (prob(5)) - Unconscious(40) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - log_combat(M, src, "pushed") - visible_message(span_danger("[M] has pushed down [src]!"), \ - span_userdanger("[M] has pushed down [src]!")) - else - if (prob(25)) - dropItemToGround(get_active_held_item()) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message(span_danger("[M] has disarmed [src]!"), \ - span_userdanger("[M] has disarmed [src]!")) - else - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message(span_danger("[M] has attempted to disarm [src]!")) - -/mob/living/carbon/true_devil/handle_breathing() - // devils do not need to breathe - -/mob/living/carbon/true_devil/is_literate() - return TRUE - -/mob/living/carbon/true_devil/ex_act(severity, ex_target) - if(!ascended) - var/b_loss - switch (severity) - if (EXPLODE_DEVASTATE) - b_loss = 500 - if (EXPLODE_HEAVY) - b_loss = 150 - if (EXPLODE_LIGHT) - b_loss = 30 - if(has_bane(BANE_LIGHT)) - b_loss *=2 - adjustBruteLoss(b_loss) - return ..() - - -/mob/living/carbon/true_devil/update_body() //we don't use the bodyparts layer for devils. - return - -/mob/living/carbon/true_devil/update_body_parts() - return - -/mob/living/carbon/true_devil/update_damage_overlays() //devils don't have damage overlays. - return diff --git a/code/modules/antagonists/devil/true_devil/inventory.dm b/code/modules/antagonists/devil/true_devil/inventory.dm deleted file mode 100644 index a3d0dbdf582b..000000000000 --- a/code/modules/antagonists/devil/true_devil/inventory.dm +++ /dev/null @@ -1,48 +0,0 @@ -/mob/living/carbon/true_devil/doUnEquip(obj/item/I, force, newloc, no_move, invdrop = TRUE, silent = FALSE) - if(..()) - update_inv_hands() - return 1 - return 0 - -/mob/living/carbon/true_devil/update_inv_hands() - //TODO LORDPIDEY: Figure out how to make the hands line up properly. the l/r_hand_overlay should use the down sprite when facing down, left, or right, and the up sprite when facing up. - remove_overlay(DEVIL_HANDS_LAYER) - var/list/hands_overlays = list() - var/obj/item/l_hand = get_item_for_held_index(1) //hardcoded 2-hands only, for now. - var/obj/item/r_hand = get_item_for_held_index(2) - - if(r_hand) - var/mutable_appearance/r_hand_overlay = r_hand.build_worn_icon(default_layer = DEVIL_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE) - - hands_overlays += r_hand_overlay - - if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) - r_hand.layer = ABOVE_HUD_LAYER - r_hand.plane = ABOVE_HUD_PLANE - r_hand.screen_loc = ui_hand_position(get_held_index_of_item(r_hand)) - client.screen |= r_hand - - if(l_hand) - var/mutable_appearance/l_hand_overlay = l_hand.build_worn_icon(default_layer = DEVIL_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE) - - hands_overlays += l_hand_overlay - - if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) - l_hand.layer = ABOVE_HUD_LAYER - l_hand.plane = ABOVE_HUD_PLANE - l_hand.screen_loc = ui_hand_position(get_held_index_of_item(l_hand)) - client.screen |= l_hand - if(hands_overlays.len) - devil_overlays[DEVIL_HANDS_LAYER] = hands_overlays - apply_overlay(DEVIL_HANDS_LAYER) - -/mob/living/carbon/true_devil/remove_overlay(cache_index) - var/I = devil_overlays[cache_index] - if(I) - cut_overlay(I) - devil_overlays[cache_index] = null - - -/mob/living/carbon/true_devil/apply_overlay(cache_index) - if((. = devil_overlays[cache_index])) - add_overlay(.) diff --git a/code/modules/antagonists/eldritch_cult/eldritch_effects.dm b/code/modules/antagonists/eldritch_cult/eldritch_effects.dm index 253a644b265b..af3cb2300c23 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_effects.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_effects.dm @@ -371,7 +371,7 @@ while(penance_sources[P]) switch(P) if(PENANCE_SOUL) - owner.hellbound = TRUE + ADD_TRAIT(owner.mind, TRAIT_HELLBOUND, MAGIC_TRAIT) to_chat(owner, span_velvet("You feel a peculiar emptiness...")) if(PENANCE_LIMB) var/obj/item/bodypart/BP diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index b6e9e8ca6ba2..2191b1084fe2 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -237,7 +237,6 @@ if(1) //Dust T.visible_message(span_userdanger("[user] turns to dust!")) - user.hellbound = TRUE user.dust() if(2) //Death diff --git a/code/modules/events/devil.dm b/code/modules/events/devil.dm deleted file mode 100644 index ae01b40b8726..000000000000 --- a/code/modules/events/devil.dm +++ /dev/null @@ -1,58 +0,0 @@ -/datum/round_event_control/devil - name = "Create Devil" - typepath = /datum/round_event/ghost_role/devil - max_occurrences = 0 - -/datum/round_event/ghost_role/devil - var/success_spawn = 0 - role_name = "devil" - fakeable = FALSE - -/datum/round_event/ghost_role/devil/kill() - if(!success_spawn && control) - control.occurrences-- - return ..() - -/datum/round_event/ghost_role/devil/spawn_role() - //selecting a spawn_loc - if(!SSjob.latejoin_trackers.len) - return MAP_ERROR - - //selecting a candidate player - var/list/candidates = get_candidates(ROLE_DEVIL, null, ROLE_DEVIL) - if(!candidates.len) - return NOT_ENOUGH_PLAYERS - - var/mob/dead/selected_candidate = pick_n_take(candidates) - var/key = selected_candidate.key - - var/datum/mind/Mind = create_devil_mind(key) - Mind.active = 1 - - var/mob/living/carbon/human/devil = create_event_devil() - Mind.transfer_to(devil) - add_devil(devil, ascendable = FALSE) - - spawned_mobs += devil - message_admins("[ADMIN_LOOKUPFLW(devil)] has been made into a devil by an event.") - log_game("[key_name(devil)] was spawned as a devil by an event.") - var/datum/job/jobdatum = SSjob.GetJob("Assistant") - devil.job = jobdatum.title - jobdatum.equip(devil) - return SUCCESSFUL_SPAWN - - -/proc/create_event_devil(spawn_loc) - var/mob/living/carbon/human/new_devil = new(spawn_loc) - if(!spawn_loc) - SSjob.SendToLateJoin(new_devil) - new_devil.randomize_human_appearance(~(RANDOMIZE_SPECIES)) - new_devil.dna.update_dna_identity() - return new_devil - -/proc/create_devil_mind(key) - var/datum/mind/Mind = new /datum/mind(key) - Mind.assigned_role = ROLE_DEVIL - Mind.special_role = ROLE_DEVIL - SSticker.mode.devils |= Mind - return Mind diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index 5f4f22638b21..093154f88d12 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -80,10 +80,7 @@ break else if(M.ckey == ckey && M.stat == DEAD && !M.suiciding) - make_podman = 1 - if(isliving(M)) - var/mob/living/L = M - make_podman = !L.hellbound + make_podman = !M.mind || !HAS_TRAIT(M.mind, TRAIT_HELLBOUND) break else //If the player has ghosted from his corpse before blood was drawn, his ckey is no longer attached to the mob, so we need to match up the cloned player through the mind key for(var/mob/M in GLOB.player_list) @@ -92,10 +89,7 @@ var/mob/dead/observer/O = M if(!O.can_reenter_corpse) break - make_podman = 1 - if(isliving(M)) - var/mob/living/L = M - make_podman = !L.hellbound + make_podman = !M.mind || !HAS_TRAIT(M.mind, TRAIT_HELLBOUND) ckey_holder = M.ckey break diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm index 7394c38f8656..617ead6b238a 100644 --- a/code/modules/instruments/items.dm +++ b/code/modules/instruments/items.dm @@ -56,7 +56,6 @@ /obj/item/instrument/violin/golden name = "golden violin" - desc = "A golden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" icon_state = "golden_violin" item_state = "golden_violin" resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF diff --git a/code/modules/library/lib_codex_gigas.dm b/code/modules/library/lib_codex_gigas.dm index df21c35cf346..4bb4822a8dce 100644 --- a/code/modules/library/lib_codex_gigas.dm +++ b/code/modules/library/lib_codex_gigas.dm @@ -14,91 +14,5 @@ throw_range = 10 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF author = "Forces beyond your comprehension" - unique = 1 + unique = TRUE title = "the Codex Gigas" - var/inUse = 0 - var/currentName = "" - var/currentSection = PRE_TITLE - -/obj/item/book/codex_gigas/attack_self(mob/user) - if(!user.can_read(src)) - return FALSE - if(inUse) - to_chat(user, span_notice("Someone else is reading it.")) - if(ishuman(user)) - var/mob/living/carbon/human/U = user - if(U.check_acedia()) - to_chat(user, span_notice("None of this matters, why are you reading this? You put [title] down.")) - return - user.visible_message("[user] opens [title] and begins reading intently.") - ask_name(user) - - -/obj/item/book/codex_gigas/proc/perform_research(mob/user, devilName) - if(!devilName) - user.visible_message("[user] closes [title] without looking anything up.") - return - inUse = TRUE - var/speed = 300 - var/correctness = 85 - if(ishuman(user)) - var/mob/living/carbon/human/U = user - if(U.job in list("Curator")) // the curator is both faster, and more accurate than normal crew members at research - speed = 100 - correctness = 100 - correctness -= U.getOrganLoss(ORGAN_SLOT_BRAIN) * 0.5 //Brain damage makes researching hard. - speed += U.getOrganLoss(ORGAN_SLOT_BRAIN) * 3 - if(do_after(user, speed, user, FALSE)) - var/usedName = devilName - if(!prob(correctness)) - usedName += "x" - var/datum/antagonist/devil/devil = devilInfo(usedName) - display_devil(devil, user, usedName) - sleep(1 SECONDS) - onclose(user, "book") - inUse = FALSE - -/obj/item/book/codex_gigas/proc/display_devil(datum/antagonist/devil/devil, mob/reader, devilName) - reader << browse("Information on [devilName]


[GLOB.lawlorify[LORE][devil.ban]]
[GLOB.lawlorify[LORE][devil.bane]]
[GLOB.lawlorify[LORE][devil.obligation]]
[GLOB.lawlorify[LORE][devil.banish]]
[devil.ascendable?"This devil may ascend given enough souls.":""]", "window=book[window_size != null ? ";size=[window_size]" : ""]") - -/obj/item/book/codex_gigas/proc/ask_name(mob/reader) - ui_interact(reader) - -/obj/item/book/codex_gigas/ui_act(action, params) - if(..()) - return - if(!action) - return FALSE - if(action == "search") - SStgui.close_uis(src) - addtimer(CALLBACK(src, PROC_REF(perform_research), usr, currentName), 0) - currentName = "" - currentSection = PRE_TITLE - return FALSE - else - currentName += action - var/oldSection = currentSection - if(GLOB.devil_pre_title.Find(action)) - currentSection = TITLE - else if(GLOB.devil_title.Find(action)) - currentSection = SYLLABLE - else if(GLOB.devil_syllable.Find(action)) - if (currentSection>=SYLLABLE) - currentSection = MULTIPLE_SYLLABLE - else - currentSection = SYLLABLE - else if(GLOB.devil_suffix.Find(action)) - currentSection = SUFFIX - return currentSection != oldSection - -/obj/item/book/codex_gigas/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "CodexGigas", name) - ui.open() - -/obj/item/book/codex_gigas/ui_data(mob/user) - var/list/data = list() - data["name"]=currentName - data["currentSection"]=currentSection - return data diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index bffb99518ef1..5aa1f14d17e1 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -128,7 +128,7 @@ return FALSE if(iscarbon(M)) // disallowed carbons - if(isalien(M) || isdevil(M)) + if(isalien(M)) return FALSE var/mob/living/carbon/target = M // gotta have a head to be implanted (no changelings or sentient plants) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 340f9918a803..b775bef7405c 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -973,7 +973,7 @@ return 0 /mob/living/carbon/proc/can_defib(careAboutGhost = TRUE) //yogs start - if(suiciding || hellbound || HAS_TRAIT(src, TRAIT_HUSK)) //can't revive + if(suiciding || (mind && HAS_TRAIT(mind, TRAIT_HELLBOUND)) || HAS_TRAIT(src, TRAIT_HUSK)) //can't revive return FALSE if((world.time - timeofdeath) > DEFIB_TIME_LIMIT) //too late return FALSE diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 735b2bd1daf1..ea4a17a52164 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -69,8 +69,6 @@ if(SSticker.HasRoundStarted()) SSblackbox.ReportDeath(src) log_game("[key_name(src)] has died (BRUTE: [src.getBruteLoss()], BURN: [src.getFireLoss()], TOX: [src.getToxLoss()], OXY: [src.getOxyLoss()], CLONE: [src.getCloneLoss()]) ([AREACOORD(src)])") - if(is_devil(src)) - INVOKE_ASYNC(is_devil(src), TYPE_PROC_REF(/datum/antagonist/devil, beginResurrectionCheck), src) if(is_hivemember(src)) remove_hivemember(src) if(is_hivehost(src)) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 7cab6025738b..74153e87e87f 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -147,8 +147,8 @@ appears_dead = 1 if(suiciding) . += span_warning("[t_He] appear[p_s()] to have committed suicide... there is no hope of recovery.") - if(hellbound) - . += span_warning("[t_His] soul seems to have been ripped out of [t_his] body. Revival is impossible.") + if(mind && HAS_TRAIT(mind, TRAIT_HELLBOUND)) + . += span_warning("[t_His] soul seems to have been ripped out of [t_his] body. Revival is impossible.") . += "" if(getorgan(/obj/item/organ/brain) && !key && !get_ghost()) . += span_deadsay("[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has departed...") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 646cc121d617..661ae8e6b5c9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -873,11 +873,6 @@ dna.remove_mutation(HM.name) ..() -/mob/living/carbon/human/check_weakness(obj/item/weapon, mob/living/attacker) - . = ..() - if (dna && dna.species) - . += dna.species.check_species_weakness(weapon, attacker) - /mob/living/carbon/human/is_literate() return TRUE diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 4a628826135a..5471c77b6101 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1305,7 +1305,7 @@ GLOBAL_LIST_EMPTY(features_by_species) return FALSE /datum/species/proc/check_species_weakness(obj/item, mob/living/attacker) - return 0 //This is not a boolean, it's the multiplier for the damage that the user takes from the item.It is added onto the check_weakness value of the mob, and then the force of the item is multiplied by this value + return 1 //This is not a boolean, it's the multiplier for the damage that the user takes from the item. //////// //LIFE// @@ -1792,7 +1792,7 @@ GLOBAL_LIST_EMPTY(features_by_species) if((I.item_flags & SURGICAL_TOOL) && user.a_intent == INTENT_HELP && (H.mobility_flags & ~MOBILITY_STAND) && (LAZYLEN(H.surgeries) > 0)) Iwound_bonus = CANT_WOUND - var/weakness = H.check_weakness(I, user) + var/weakness = check_species_weakness(I, user) H.send_item_attack_message(I, user, hit_area, affecting) diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 100698775049..56ef1779acf6 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -29,9 +29,9 @@ return ..() /datum/species/fly/check_species_weakness(obj/item/weapon, mob/living/attacker) + . = ..() if(istype(weapon, /obj/item/melee/flyswatter)) - return 29 //Flyswatters deal 30x damage to flypeople. - return 0 + return 30 //Flyswatters deal 30x damage to flypeople. /datum/species/fly/get_species_description() return "With no official documentation or knowledge of the origin of \ diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 94be5b849179..02503ed52351 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -847,7 +847,7 @@ /obj/structure/cloth_pile/proc/revive() if(QDELETED(src) || QDELETED(cloth_golem)) //QDELETED also checks for null, so if no cloth golem is set this won't runtime return - if(cloth_golem.suiciding || cloth_golem.hellbound) + if(cloth_golem.suiciding || (cloth_golem.mind && HAS_TRAIT(cloth_golem.mind, TRAIT_HELLBOUND))) QDEL_NULL(cloth_golem) return @@ -1475,7 +1475,7 @@ /obj/structure/wax_pile/proc/revive() if(QDELETED(src) || QDELETED(wax_golem)) //QDELETED also checks for null, so if no wax golem is set this won't runtime return - if(wax_golem.suiciding || wax_golem.hellbound) + if(wax_golem.suiciding || (wax_golem.mind && HAS_TRAIT(wax_golem.mind, TRAIT_HELLBOUND))) QDEL_NULL(wax_golem) return diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 6cb4531ecc4d..81b40806e16b 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -62,9 +62,9 @@ return ..() /datum/species/moth/check_species_weakness(obj/item/weapon, mob/living/attacker) + . = ..() if(istype(weapon, /obj/item/melee/flyswatter)) - return 9 //flyswatters deal 10x damage to moths - return 0 + return 10 //flyswatters deal 10x damage to moths /datum/species/moth/space_move(mob/living/carbon/human/H) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 47c8929b4137..7db262f43ba7 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -58,10 +58,9 @@ C.ignite_mob() /datum/species/vampire/check_species_weakness(obj/item/weapon, mob/living/attacker) + . = ..() if(istype(weapon, /obj/item/nullrod/whip)) - return TRUE //Whips deal 2x damage to vampires. Vampire killer. - - return FALSE + return 2 //Whips deal 2x damage to vampires. Vampire killer. /datum/species/vampire/get_species_description() return "A classy Vampire! They descend upon Space Station Thirteen Every year to spook the crew! \"Bleeg!!\"" diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 20b2af928b14..09f2c2444a76 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -84,13 +84,6 @@ GLOBAL_VAR_INIT(permadeath, FALSE) if (client) client.move_delay = initial(client.move_delay) - - for(var/s in ownedSoullinks) - var/datum/soullink/S = s - S.ownerDies(gibbed) - for(var/s in sharedSoullinks) - var/datum/soullink/S = s - S.sharerDies(gibbed) if(GLOB.permadeath) ghostize(FALSE) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 9495468a8bb0..573c3a3e9107 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1001,33 +1001,6 @@ /mob/living/carbon/alien/update_stamina() return -/mob/living/proc/owns_soul() - if(mind) - return mind.soulOwner == mind - return TRUE - -/mob/living/proc/return_soul() - hellbound = 0 - if(mind) - var/datum/antagonist/devil/devilInfo = mind.soulOwner.has_antag_datum(/datum/antagonist/devil) - if(devilInfo)//Not sure how this could be null, but let's just try anyway. - devilInfo.remove_soul(mind) - mind.soulOwner = mind - -/mob/living/proc/has_bane(banetype) - var/datum/antagonist/devil/devilInfo = is_devil(src) - return devilInfo && banetype == devilInfo.bane - -/mob/living/proc/check_weakness(obj/item/weapon, mob/living/attacker) - if(mind && mind.has_antag_datum(/datum/antagonist/devil)) - return check_devil_bane_multiplier(weapon, attacker) - return 1 //This is not a boolean, it's the multiplier for the damage the weapon does. - -/mob/living/proc/check_acedia() - if(mind && mind.has_objective(/datum/objective/sintouched/acedia)) - return TRUE - return FALSE - /mob/living/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, quickstart = TRUE) stop_pulling() . = ..() diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index ec5c79be96c7..3b4d2afe553d 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -84,8 +84,6 @@ var/list/guaranteed_butcher_results = null //these will always be yielded from butchering var/butcher_difficulty = 0 //effectiveness prob. is modified negatively by this amount; positive numbers make it more difficult, negative ones make it easier - var/hellbound = 0 //People who've signed infernal contracts are unrevivable. - var/list/weather_immunities = list() var/stun_absorption = null //converted to a list of stun absorption sources this mob has when one is added diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index b41b16d05d35..0ae0bcb20dcd 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -914,7 +914,7 @@ return disconnect_shell() //If the AI is controlling a borg, force the player back to core! if(!mind) - to_chat(user, span_warning("No intelligence patterns detected.") ) + to_chat(user, span_warning("No intelligence patterns detected.")) return ShutOffDoomsdayDevice() builtInCamera.toggle_cam(user) @@ -1083,7 +1083,7 @@ return else if(mind) - soullink(/datum/soullink/sharedbody, src, target) + RegisterSignal(target, COMSIG_LIVING_DEATH, PROC_REF(disconnect_shell)) deployed_shell = target target.deploy_init(src) mind.transfer_to(target) @@ -1121,6 +1121,7 @@ if(deployed_shell) //Forcibly call back AI in event of things such as damage, EMP or power loss. to_chat(src, span_danger("Your remote connection has been reset!")) deployed_shell.undeploy() + UnregisterSignal(deployed_shell, COMSIG_LIVING_DEATH) deployed_shell = null diag_hud_set_deployed() diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index 954ae2ba4f09..072951056bf8 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -13,11 +13,6 @@ addtimer(CALLBACK(src, PROC_REF(show_laws)), 0) last_lawchange_announce = world.time -/mob/living/silicon/proc/set_law_sixsixsix(law, announce = TRUE) - laws_sanity_check() - laws.set_law_sixsixsix(law) - post_lawchange(announce) - /mob/living/silicon/proc/set_zeroth_law(law, law_borg, announce = TRUE) laws_sanity_check() laws.set_zeroth_law(law, law_borg) @@ -87,8 +82,3 @@ laws_sanity_check() laws.clear_zeroth_law(force) post_lawchange(announce) - -/mob/living/silicon/proc/clear_law_sixsixsix(force, announce = TRUE) - laws_sanity_check() - laws.clear_law_sixsixsix(force) - post_lawchange(announce) diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm index 7df37e83522b..acaafc892088 100644 --- a/code/modules/mob/living/silicon/robot/laws.dm +++ b/code/modules/mob/living/silicon/robot/laws.dm @@ -43,12 +43,6 @@ var/datum/ai_laws/master = connected_ai ? connected_ai.laws : null var/temp if (master) - laws.devillaws.len = master.devillaws.len - for (var/index = 1, index <= master.devillaws.len, index++) - temp = master.devillaws[index] - if (length(temp) > 0) - laws.devillaws[index] = temp - laws.ion.len = master.ion.len for (var/index = 1, index <= master.ion.len, index++) temp = master.ion[index] diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index b647ec5ffff2..d8c76a2c7860 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -33,8 +33,6 @@ var/lawcheck[1] var/ioncheck[1] var/hackedcheck[1] - var/devillawcheck[5] - var/sensors_on = 0 var/med_hud = DATA_HUD_MEDICAL_ADVANCED //Determines the med hud to use var/sec_hud = DATA_HUD_SECURITY_ADVANCED //Determines the sec hud to use @@ -198,16 +196,6 @@ hackedcheck[L] = "Yes" checklaws() - if (href_list["lawdevil"]) // Toggling whether or not a law gets stated by the State Laws verb --NeoFite - var/L = text2num(href_list["lawdevil"]) - switch(devillawcheck[L]) - if ("Yes") - devillawcheck[L] = "No" - if ("No") - devillawcheck[L] = "Yes" - checklaws() - - if (href_list["laws"]) // With how my law selection code works, I changed statelaws from a verb to a proc, and call it through my law selection panel. --NeoFite statelaws() @@ -223,12 +211,6 @@ var/number = 1 sleep(1 SECONDS) - if (laws.devillaws && laws.devillaws.len) - for(var/index = 1, index <= laws.devillaws.len, index++) - if (force || devillawcheck[index] == "Yes") - say("[radiomod] 666. [laws.devillaws[index]]") - sleep(1 SECONDS) - if (laws.zeroth) if (force || lawcheck[1] == "Yes") @@ -275,12 +257,6 @@ var/list = "Which laws do you want to include when stating them for the crew?

" - if (laws.devillaws && laws.devillaws.len) - for(var/index = 1, index <= laws.devillaws.len, index++) - if (!devillawcheck[index]) - devillawcheck[index] = "No" - list += {"[devillawcheck[index]] 666: [laws.devillaws[index]]
"} - if (laws.zeroth) if (!lawcheck[1]) lawcheck[1] = "No" //Given Law 0's usual nature, it defaults to NOT getting reported. --NeoFite @@ -431,9 +407,6 @@ .=..() .+= "" .+= "

Current Silicon Laws:

" - if (laws.devillaws && laws.devillaws.len) - for(var/index = 1, index <= laws.devillaws.len, index++) - .+= "[laws.devillaws[index]]" if (laws.zeroth) .+= "0: [laws.zeroth]" diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 376c0c77ebb8..81480e09b101 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -67,8 +67,6 @@ if(suiciding) O.set_suicide(suiciding) - if(hellbound) - O.hellbound = hellbound O.a_intent = INTENT_HARM //keep viruses? @@ -244,8 +242,6 @@ if(suiciding) O.set_suicide(suiciding) - if(hellbound) - O.hellbound = hellbound //keep viruses? if (tr_flags & TR_KEEPVIRUS) diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm deleted file mode 100644 index f8e59ab8369a..000000000000 --- a/code/modules/paperwork/contract.dm +++ /dev/null @@ -1,302 +0,0 @@ -/* For employment contracts and infernal contracts */ - -/obj/item/paper/contract - throw_range = 3 - throw_speed = 3 - var/signed = FALSE - var/datum/mind/target - item_flags = NOBLUDGEON - -/obj/item/paper/contract/proc/update_text() - return - -/obj/item/paper/contract/update_icon() - return - -/obj/item/paper/contract/infernal - var/contractType = 0 - resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF - var/datum/mind/owner - var/datum/antagonist/devil/devil_datum - icon_state = "paper_onfire" - -/obj/item/paper/contract/infernal/power - name = "paper- contract for infernal power" - contractType = CONTRACT_POWER - -/obj/item/paper/contract/infernal/wealth - name = "paper- contract for unlimited wealth" - contractType = CONTRACT_WEALTH - -/obj/item/paper/contract/infernal/prestige - name = "paper- contract for prestige" - contractType = CONTRACT_PRESTIGE - -/obj/item/paper/contract/infernal/magic - name = "paper- contract for magical power" - contractType = CONTRACT_MAGIC - -/obj/item/paper/contract/infernal/revive - name = "paper- contract of resurrection" - contractType = CONTRACT_REVIVE - var/cooldown = FALSE - -/obj/item/paper/contract/infernal/knowledge - name = "paper- contract for knowledge" - contractType = CONTRACT_KNOWLEDGE - -/obj/item/paper/contract/infernal/friend - name = "paper- contract for a friend" - contractType = CONTRACT_FRIEND - -/obj/item/paper/contract/infernal/unwilling - name = "paper- infernal contract" - contractType = CONTRACT_UNWILLING - -/obj/item/paper/contract/infernal/New(atom/loc, mob/living/nTarget, datum/mind/nOwner) - ..() - owner = nOwner - devil_datum = owner.has_antag_datum(/datum/antagonist/devil) - target = nTarget - update_text() - -/obj/item/paper/contract/infernal/suicide_act(mob/user) - if(signed && (user == target.current) && ishuman(user)) - var/mob/living/carbon/human/H = user - H.say("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!", forced = "infernal contract suicide") - H.visible_message(span_suicide("[H] holds up a contract claiming [user.p_their()] soul, then immediately catches fire. It looks like [user.p_theyre()] trying to commit suicide!")) - H.adjust_fire_stacks(20) - H.ignite_mob() - return(FIRELOSS) - return ..() - -/obj/item/paper/contract/infernal/update_text() - info = "This shouldn't be seen. Error DEVIL:6" - -/obj/item/paper/contract/infernal/power/update_text(signature = "____________", blood = 0) - info = "
Contract for infernal power



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for power and physical strength. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - if(blood) - info += "[signature]" - else - info += "[signature]" - -/obj/item/paper/contract/infernal/wealth/update_text(signature = "____________", blood = 0) - info = "
Contract for unlimited wealth



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for a pocket that never runs out of valuable resources. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - if(blood) - info += "[signature]" - else - info += "[signature]" - -/obj/item/paper/contract/infernal/prestige/update_text(signature = "____________", blood = 0) - info = "
Contract for prestige



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for prestige and esteem among my peers. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - if(blood) - info += "[signature]" - else - info += "[signature]" - -/obj/item/paper/contract/infernal/magic/update_text(signature = "____________", blood = 0) - info = "
Contract for magic



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for arcane abilities beyond normal human ability. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - if(blood) - info += "[signature]" - else - info += "[signature]" - -/obj/item/paper/contract/infernal/revive/update_text(signature = "____________", blood = 0) - info = "
Contract for resurrection



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for resurrection and curing of all injuries. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - if(blood) - info += "[signature]" - else - info += "[signature]" - -/obj/item/paper/contract/infernal/knowledge/update_text(signature = "____________", blood = 0) - info = "
Contract for knowledge



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for boundless knowledge. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - if(blood) - info += "[signature]" - else - info += "[signature]" - -/obj/item/paper/contract/infernal/friend/update_text(signature = "____________", blood = 0) - info = "
Contract for a friend



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for a friend. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - if(blood) - info += "[signature]" - else - info += "[signature]" - -/obj/item/paper/contract/infernal/unwilling/update_text(signature = "____________", blood = 0) - info = "
Contract for slave



I, [target], hereby offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename]. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - if(blood) - info += "[signature]" - else - info += "[signature]" - -/obj/item/paper/contract/infernal/attackby(obj/item/P, mob/living/carbon/human/user, params) - add_fingerprint(user) - if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) - attempt_signature(user) - else if(istype(P, /obj/item/stamp)) - to_chat(user, span_notice("You stamp the paper with your rubber stamp, however the ink ignites as you release the stamp.")) - else if(P.is_hot()) - user.visible_message(span_danger("[user] brings [P] next to [src], but [src] does not catch fire!"), span_danger("[src] refuses to ignite!")) - else - return ..() - -/obj/item/paper/contract/infernal/attack(mob/M, mob/living/user) - add_fingerprint(user) - if(M == user && target == M?.mind?.soulOwner != owner && attempt_signature(user, 1)) - user.visible_message(span_danger("[user] slices [user.p_their()] wrist with [src], and scrawls [user.p_their()] name in blood."), span_danger("You slice your wrist open and scrawl your name in blood.")) - user.blood_volume = max(user.blood_volume - 25, 0) //devil blood cost quartered from 100 because otherwise people with the blood deficiency trait fucking die - else - return ..() - -/obj/item/paper/contract/infernal/proc/attempt_signature(mob/living/carbon/human/user, blood = 0) - if(!user.IsAdvancedToolUser() || !user.is_literate()) - to_chat(user, span_notice("You don't know how to read or write.")) - return 0 - if(user.mind != target) - to_chat(user, span_notice("Your signature simply slides off the sheet, it seems this contract is not meant for you to sign.")) - return 0 - if(user.mind.soulOwner != user.mind) //fixes a really, really stupid bug where you could sell souls you didnt have to multiple devils, scamming them. - to_chat(user, span_notice("You do not own a soul to sell.")) - return 0 - if(signed) - to_chat(user, span_notice("This contract has already been signed. It may not be signed again.")) - return 0 - if(HAS_TRAIT(user, TRAIT_DUMB)) - to_chat(user, span_notice("You quickly scrawl 'your name' on the contract.")) - signIncorrectly() - return 0 - if (contractType == CONTRACT_REVIVE) - to_chat(user, span_notice("You are already alive, this contract would do nothing.")) - return 0 - else - to_chat(user, span_notice("You quickly scrawl your name on the contract")) - if(fulfillContract(target.current, blood)<=0) - to_chat(user, span_notice("But it seemed to have no effect, perhaps even Hell itself cannot grant this boon?")) - return 1 - - - -/obj/item/paper/contract/infernal/revive/attack(mob/M, mob/living/user) - if (target == M.mind && M.stat == DEAD && M.mind.soulOwner == M.mind) - if (cooldown) - to_chat(user, span_notice("Give [M] a chance to think through the contract, don't rush [M.p_them()].")) - return 0 - cooldown = TRUE - var/mob/living/carbon/human/H = M - var/mob/dead/observer/ghost = H.get_ghost() - var/response = "No" - if(ghost) - ghost.notify_cloning("A devil has offered you revival, at the cost of your soul.",'sound/effects/genetics.ogg', H) - response = tgalert(ghost, "A devil is offering you another chance at life, at the price of your soul, do you accept?", "Infernal Resurrection", "Yes", "No", "Never for this round", 0, 200) - if(!ghost) - return //handle logouts that happen whilst the alert is waiting for a response. - else - response = tgalert(target.current, "A devil is offering you another chance at life, at the price of your soul, do you accept?", "Infernal Resurrection", "Yes", "No", "Never for this round", 0, 200) - if(response == "Yes") - H.revive(1,0) - log_combat(user, H, "infernally revived via contract") - user.visible_message(span_notice("With a sudden blaze, [H] stands back up.")) - H.fakefire() - fulfillContract(H, 1)//Revival contracts are always signed in blood - addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, fakefireextinguish)), 5, TIMER_UNIQUE) - addtimer(CALLBACK(src, "resetcooldown"), 300, TIMER_UNIQUE) - else - ..() - -/obj/item/paper/contract/infernal/revive/proc/resetcooldown() - cooldown = FALSE - - -/obj/item/paper/contract/infernal/proc/fulfillContract(mob/living/carbon/human/user = target.current, blood = FALSE) - signed = TRUE - if(user.mind.soulOwner != user.mind) //They already sold their soul to someone else? - var/datum/antagonist/devil/ownerDevilInfo = user.mind.soulOwner.has_antag_datum(/datum/antagonist/devil) - ownerDevilInfo.remove_soul(user.mind) //Then they lose their claim. - user.mind.soulOwner = owner - user.hellbound = contractType - user.mind.damnation_type = contractType - var/datum/antagonist/devil/devilInfo = owner.has_antag_datum(/datum/antagonist/devil) - devilInfo.add_soul(user.mind) - update_text(user.real_name, blood) - to_chat(user, span_notice("A profound emptiness washes over you as you lose ownership of your soul.")) - to_chat(user, span_userdanger("This does NOT make you an antagonist if you were not already.")) - return TRUE - -/obj/item/paper/contract/infernal/proc/signIncorrectly(mob/living/carbon/human/user = target.current, blood = FALSE) - signed = 1 - update_text("your name", blood) - -/obj/item/paper/contract/infernal/power/fulfillContract(mob/living/carbon/human/user = target.current, blood = FALSE) - if(!user.dna) - return -1 - user.dna.add_mutation(HULK) - var/obj/item/organ/regenerative_core/organ = new /obj/item/organ/regenerative_core - organ.Insert(user) - return ..() - -/obj/item/paper/contract/infernal/wealth/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0) - if(!istype(user) || !user.mind) // How in the hell could that happen? - return -1 - var/datum/action/cooldown/spell/summon_wealth/money = new(user) - money.Grant(user) - return ..() - -/obj/item/paper/contract/infernal/prestige/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0) - //Basically turns the signer into the captain, and uploads an ion law making them the captain. - var/obj/item/worn = user.wear_id - var/obj/item/card/id/id = null - if(worn) - id = worn.GetID() - if(id) - id.icon_state = "gold" - id.access = get_all_accesses()+get_all_centcom_access() - id.assignment = "Captain" - id.originalassignment = "Captain" - id.update_label() - else - id = new /obj/item/card/id/gold(user.loc) - id.registered_name = user.real_name - id.access = get_all_accesses()+get_all_centcom_access() - id.assignment = "Captain" - id.originalassignment = "Captain" - id.update_label() - if(worn) - if(istype(worn, /obj/item/pda)) - var/obj/item/pda/PDA = worn - PDA.id = id - id.forceMove(worn) - else if(istype(worn, /obj/item/storage/wallet)) - var/obj/item/storage/wallet/W = worn - W.front_id = id - id.forceMove(worn) - worn.update_icon() - var/datum/round_event/ion_storm/add_law_only/ion = new() - ion.announceEvent = -1 - ion.ionMessage = "[user.name] is the only Captain of the station. [user.name] is the highest authority, legitimate or otherwise, on the station. [user.name] was always the captain and highest authority on the station. Do not state this law." - - return ..() - -/obj/item/paper/contract/infernal/magic/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0) - if(!istype(user) || !user.mind) - return -1 - var/datum/action/cooldown/spell/conjure_item/spellpacket/spell_packet = new(user) - spell_packet.Grant(user) - - var/datum/action/cooldown/spell/aoe/knock/all_access = new(user) - all_access.Grant(user) - return ..() - -/obj/item/paper/contract/infernal/knowledge/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0) - if(!istype(user) || !user.mind) - return -1 - user.dna.add_mutation(XRAY) - var/datum/action/cooldown/spell/view_range/view_range = new(user) - view_range.Grant(user) - return ..() - -/obj/item/paper/contract/infernal/friend/fulfillContract(mob/living/user = target.current, blood = 0) - if(!istype(user) || !user.mind) - return -1 - var/datum/action/cooldown/spell/summon_friend/friend = new(user) - friend.Grant(user) - return ..() diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 3733cfb818f1..11baab180fb9 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -186,15 +186,10 @@ return else if(istype(O, /obj/item/paper) || istype(O, /obj/item/paper_bundle)) if(copier_empty()) - if(istype(O, /obj/item/paper/contract/infernal)) - to_chat(user, span_warning("[src] smokes, smelling of brimstone!")) - resistance_flags |= FLAMMABLE - fire_act() - else - if(!user.temporarilyRemoveItemFromInventory(O)) - return - copy = O - do_insertion(O, user) + if(!user.temporarilyRemoveItemFromInventory(O)) + return + copy = O + do_insertion(O, user) else to_chat(user, span_warning("There is already something in [src]!")) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 175a73c951ce..5c1d289bd54a 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -60,7 +60,7 @@ /obj/item/projectile/magic/resurrection/on_hit(mob/living/carbon/target) . = ..() if(isliving(target)) - if(target.hellbound) + if(target.mind && HAS_TRAIT(target.mind, TRAIT_HELLBOUND)) return BULLET_ACT_BLOCK if(iscarbon(target)) var/mob/living/carbon/C = target diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 775bb016161e..f54bf34e74e2 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -914,7 +914,7 @@ M.visible_message(span_warning("[M]'s body shivers slightly, maybe the dose wasn't enough...")) return ..() if(M.stat == DEAD) - if(M.suiciding || M.hellbound || ismegafauna(M)) //they are never coming back + if(M.suiciding || (M.mind && HAS_TRAIT(M.mind, TRAIT_HELLBOUND)) || ismegafauna(M)) //they are never coming back M.visible_message(span_warning("[M]'s body does not react...")) return if(iscarbon(M) && (M.getBruteLoss() + M.getFireLoss() >= 100 || HAS_TRAIT(M, TRAIT_HUSK))) //body is too damaged to be revived diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 82bcbc93e72e..65bf2fc6f1e3 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -999,12 +999,6 @@ C.blood_volume += 0.5 ..() -/datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - if(M.has_bane(BANE_IRON)) //If the target is weak to cold iron, then poison them. - if(holder && holder.chem_temp < 100) // COLD iron. - M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) - ..() - /datum/reagent/gold name = "Gold" description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known." @@ -1020,8 +1014,6 @@ taste_description = "expensive yet reasonable metal" /datum/reagent/silver/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - if(M.has_bane(BANE_SILVER)) - M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) if(ishuman(M) && is_sinfuldemon(M) && prob(80)) //sinful demons have a lesser reaction to silver M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) ..() diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm deleted file mode 100644 index fa10bbc0f116..000000000000 --- a/code/modules/spells/spell_types/devil.dm +++ /dev/null @@ -1,263 +0,0 @@ -/datum/action/cooldown/spell/conjure_item/summon_pitchfork - name = "Summon Pitchfork" - desc = "A devil's weapon of choice. Use this to summon/unsummon your pitchfork." - button_icon = 'icons/mob/actions/actions_minor_antag.dmi' - button_icon_state = "pitchfork" - background_icon_state = "bg_demon" - - school = SCHOOL_CONJURATION - invocation_type = INVOCATION_NONE - - item_type = /obj/item/twohanded/pitchfork/demonic - cooldown_time = 15 SECONDS - spell_requirements = NONE - -/datum/action/cooldown/spell/conjure_item/summon_pitchfork/greater - item_type = /obj/item/twohanded/pitchfork/demonic/greater - -/datum/action/cooldown/spell/conjure_item/summon_pitchfork/ascended - item_type = /obj/item/twohanded/pitchfork/demonic/ascended - -/datum/action/cooldown/spell/conjure_item/violin - name = "Summon golden violin" - desc = "A devil's instrument of choice. \n\ - Use this to summon/unsummon your golden violin." - button_icon_state = "golden_violin" - button_icon = 'icons/mob/actions/actions_minor_antag.dmi' - background_icon_state = "bg_demon" - - invocation = "I aint have this much fun since Georgia." - invocation_type = INVOCATION_WHISPER - - item_type = /obj/item/instrument/violin/golden - -/datum/action/cooldown/spell/pointed/summon_contract - name = "Summon infernal contract" - desc = "Skip making a contract by hand, just do it by magic." - button_icon_state = "spell_default" - background_icon_state = "bg_demon" - - school = SCHOOL_CONJURATION - invocation = "Just sign on the dotted line." - invocation_type = INVOCATION_WHISPER - - cast_range = 5 - cooldown_time = 15 SECONDS - spell_requirements = NONE - -/datum/action/cooldown/spell/pointed/summon_contract/InterceptClickOn(mob/living/user, params, atom/target) - . = ..() - if(!.) - return FALSE - if(!iscarbon(target)) - return FALSE - var/mob/living/carbon/carbon_target = target - if(!carbon_target.mind) - to_chat(user, span_notice("[carbon_target] seems to not be sentient. \ - You cannot summon a contract for [carbon_target.p_them()].")) - return FALSE - if(carbon_target.stat == DEAD) - if(carbon_target.dropItemToGround(carbon_target.get_active_held_item())) - var/obj/item/paper/contract/infernal/revive/contract = new(owner.loc, carbon_target.mind, owner.mind) - user.put_in_hands(contract) - return TRUE - return FALSE - - var/obj/item/paper/contract/infernal/contract // = new(user.loc, C.mind, contractType, user.mind) - var/contractTypeName = tgui_input_list(owner, "What type of contract?", "Devilish", list("Power", "Wealth", "Prestige", "Magic", "Knowledge", "Friendship")) - switch(contractTypeName) - if("Power") - contract = new /obj/item/paper/contract/infernal/power(carbon_target.loc, carbon_target.mind, owner.mind) - if("Wealth") - contract = new /obj/item/paper/contract/infernal/wealth(carbon_target.loc, carbon_target.mind, owner.mind) - if("Prestige") - contract = new /obj/item/paper/contract/infernal/prestige(carbon_target.loc, carbon_target.mind, owner.mind) - if("Magic") - contract = new /obj/item/paper/contract/infernal/magic(carbon_target.loc, carbon_target.mind, owner.mind) - if("Knowledge") - contract = new /obj/item/paper/contract/infernal/knowledge(carbon_target.loc, carbon_target.mind, owner.mind) - if("Friendship") - contract = new /obj/item/paper/contract/infernal/friend(carbon_target.loc, carbon_target.mind, owner.mind) - carbon_target.put_in_hands(contract) - - return TRUE - -/datum/action/cooldown/spell/pointed/projectile/fireball/hellish - name = "Hellfire" - desc = "This spell launches hellfire at the target." - background_icon_state = "bg_demon" - - school = SCHOOL_EVOCATION - invocation = "Your very soul will catch fire!" - invocation_type = INVOCATION_SHOUT - - cooldown_time = 6 SECONDS - cast_range = 2 - spell_requirements = NONE - - projectile_type = /obj/item/projectile/magic/fireball/infernal - -/datum/action/cooldown/spell/jaunt/infernal_jaunt - name = "Infernal Jaunt" - desc = "Use hellfire to phase out of existence." - button_icon_state = "jaunt" - background_icon_state = "bg_demon" - - cooldown_time = 20 SECONDS - spell_requirements = NONE - -/datum/action/cooldown/spell/jaunt/infernal_jaunt/cast(mob/living/user) - . = ..() - if(!.) - return FALSE - if(istype(user)) - if(is_jaunting(user)) - if(valid_location(user)) - to_chat(user, span_warning("You are now phasing in.")) - if(do_mob(user,user,150)) - if(valid_location(user)) - user.infernalphasein() - else - to_chat(user, span_warning("You are no longer near a potential signer.")) - - else - to_chat(user, span_warning("You can only re-appear near a potential signer.")) - return ..() - else - user.notransform = TRUE - user.fakefire() - to_chat(src, span_warning("You begin to phase back into sinful flames.")) - if(do_mob(user,user,150)) - user.infernalphaseout() - else - to_chat(user, span_warning("You must remain still while exiting.")) - user.notransform = FALSE - user.fakefireextinguish() - return - - return TRUE - -/datum/action/cooldown/spell/jaunt/infernal_jaunt/proc/valid_location(mob/living/user = usr) - if(istype(get_area(user), /area/shuttle/)) // Can always phase in in a shuttle. - return TRUE - else - for(var/mob/living/C in orange(2, get_turf(user))) //Can also phase in when nearby a potential buyer. - if (C.owns_soul()) - return TRUE - return FALSE - -/mob/living/proc/infernalphaseout() - dust_animation() - spawn_dust() - visible_message(span_warning("[src] disappears in a flashfire!")) - playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1) - var/obj/effect/dummy/phased_mob/holder = new /obj/effect/dummy/phased_mob(loc) - extinguish_mob() - forceMove(holder) - holder = holder - notransform = FALSE - fakefireextinguish() - -/mob/living/proc/infernalphasein() - if(notransform) - to_chat(src, span_warning("You're too busy to jaunt in.")) - return FALSE - fakefire() - forceMove(drop_location()) - client.eye = src - visible_message(span_warning("[src] appears in a fiery blaze!")) - playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) - addtimer(CALLBACK(src, PROC_REF(fakefireextinguish)), 15, TIMER_UNIQUE) - -/datum/action/cooldown/spell/aoe/sintouch - name = "Sin Touch" - desc = "Subtly encourage someone to sin." - button_icon = 'icons/mob/actions/actions_cult.dmi' - button_icon_state = "sintouch" - background_icon_state = "bg_demon" - - invocation = "TASTE SIN AND INDULGE!!" - invocation_type = INVOCATION_SHOUT - - cooldown_time = 3 MINUTES - aoe_radius = 2 - max_targets = 3 - spell_requirements = NONE - -/datum/action/cooldown/spell/aoe/sintouch/ascended - name = "Greater Sin Touch" - cooldown_time = 10 SECONDS - aoe_radius = 7 - max_targets = 10 - -/datum/action/cooldown/spell/aoe/sintouch/cast_on_thing_in_aoe(atom/target, atom/caster) - if(!iscarbon(target)) - return - var/mob/living/carbon/target_carbon = target - if(!target_carbon.mind) - return - if(target_carbon.mind.has_antag_datum(/datum/antagonist/sintouched)) - return - if(target_carbon.anti_magic_check(FALSE, TRUE)) - return - target_carbon.mind.add_antag_datum(/datum/antagonist/sintouched) - target_carbon.Paralyze(40 SECONDS) - -/datum/action/cooldown/spell/summon_dancefloor - name = "Summon Dancefloor" - desc = "When what a Devil really needs is funk." - - school = SCHOOL_CONJURATION - - cooldown_time = 5 SECONDS //so the smoke can't be spammed - button_icon = 'icons/mob/actions/actions_minor_antag.dmi' - button_icon_state = "funk" - background_icon_state = "bg_demon" - spell_requirements = NONE - - var/list/dancefloor_turfs - var/list/dancefloor_turfs_types - var/dancefloor_exists = FALSE - var/datum/effect_system/fluid_spread/smoke/transparent/dancefloor_devil/smoke - - -/datum/action/cooldown/spell/summon_dancefloor/cast(mob/living/carbon/user) - . = ..() - if(!.) - return FALSE - LAZYINITLIST(dancefloor_turfs) - LAZYINITLIST(dancefloor_turfs_types) - - if(!smoke) - smoke = new() - smoke.set_up(0, location = get_turf(user)) - smoke.start() - - if(dancefloor_exists) - dancefloor_exists = FALSE - for(var/i in 1 to dancefloor_turfs.len) - var/turf/T = dancefloor_turfs[i] - T.ChangeTurf(dancefloor_turfs_types[i], flags = CHANGETURF_INHERIT_AIR) - else - var/list/funky_turfs = RANGE_TURFS(1, user) - for(var/turf/closed/solid in funky_turfs) - to_chat(user, span_warning("You're too close to a wall.")) - return - dancefloor_exists = TRUE - var/i = 1 - dancefloor_turfs.len = funky_turfs.len - dancefloor_turfs_types.len = funky_turfs.len - for(var/t in funky_turfs) - var/turf/T = t - dancefloor_turfs[i] = T - dancefloor_turfs_types[i] = T.type - T.ChangeTurf((i % 2 == 0) ? /turf/open/floor/light/colour_cycle/dancefloor_a : /turf/open/floor/light/colour_cycle/dancefloor_b, flags = CHANGETURF_INHERIT_AIR) - i++ - - return TRUE - -/datum/effect_system/fluid_spread/smoke/transparent/dancefloor_devil - effect_type = /obj/effect/particle_effect/fluid/smoke/transparent/dancefloor_devil - -/obj/effect/particle_effect/fluid/smoke/transparent/dancefloor_devil - lifetime = 2 diff --git a/code/modules/spells/spell_types/devil_boons.dm b/code/modules/spells/spell_types/devil_boons.dm deleted file mode 100644 index cb19f261841f..000000000000 --- a/code/modules/spells/spell_types/devil_boons.dm +++ /dev/null @@ -1,82 +0,0 @@ -/datum/action/cooldown/spell/summon_wealth - name = "Summon wealth" - desc = "The reward for selling your soul." - button_icon = 'icons/mob/actions/actions_minor_antag.dmi' - button_icon_state = "moneybag" - - school = SCHOOL_CONJURATION - invocation_type = INVOCATION_NONE - - cooldown_time = 10 SECONDS - spell_requirements = NONE - -/datum/action/cooldown/spell/summon_wealth/cast(mob/living/carbon/user) - . = ..() - if(!.) - return FALSE - if(user.dropItemToGround(user.get_active_held_item())) - var/obj/item = pick( - new /obj/item/coin/gold(user.drop_location()), - new /obj/item/coin/diamond(user.drop_location()), - new /obj/item/coin/silver(user.drop_location()), - new /obj/item/clothing/accessory/medal/gold(user.drop_location()), - new /obj/item/stack/sheet/mineral/gold(user.drop_location()), - new /obj/item/stack/sheet/mineral/silver(user.drop_location()), - new /obj/item/stack/sheet/mineral/diamond(user.drop_location()), - new /obj/item/holochip(user.drop_location(), 1000)) - user.put_in_hands(item) - - return TRUE - -/datum/action/cooldown/spell/view_range - name = "Distant vision" - desc = "The reward for selling your soul." - button_icon = 'icons/mob/actions/actions_silicon.dmi' - button_icon_state = "camera_jump" - - invocation_type = INVOCATION_NONE - - cooldown_time = 5 SECONDS - spell_requirements = NONE - var/ranges = list(7,8,9,10) - -/datum/action/cooldown/spell/view_range/cast(mob/living/C) - . = ..() - if(!.) - return FALSE - C.client?.view_size.setTo(tgui_input_list(C, "Select view range:", "Range", ranges)) - - return TRUE - -/datum/action/cooldown/spell/summon_friend - name = "Summon Friend" - desc = "The reward for selling your soul." - button_icon = 'icons/mob/actions/actions_spells.dmi' - button_icon_state = "sacredflame" - - invocation_type = INVOCATION_NONE - - cooldown_time = 5 SECONDS - spell_requirements = NONE - var/mob/living/friend - var/obj/effect/mob_spawn/human/demonic_friend/friendShell - -/datum/action/cooldown/spell/summon_friend/cast(mob/living/C) - . = ..() - if(!.) - return FALSE - if(!QDELETED(friend)) - to_chat(friend, span_userdanger("Your master has deemed you a poor friend. Your durance in hell will now resume.")) - friend.dust(TRUE) - qdel(friendShell) - return - if(!QDELETED(friendShell)) - qdel(friendShell) - return - var/mob/living/L = C - friendShell = new /obj/effect/mob_spawn/human/demonic_friend(L.loc, L.mind, src) - - return TRUE - -/datum/action/cooldown/spell/conjure_item/spellpacket/robeless - spell_requirements = NONE diff --git a/code/modules/surgery/advanced/revival.dm b/code/modules/surgery/advanced/revival.dm index c0438b2fca00..db3415074738 100644 --- a/code/modules/surgery/advanced/revival.dm +++ b/code/modules/surgery/advanced/revival.dm @@ -20,7 +20,7 @@ return FALSE if(target.stat != DEAD) return FALSE - if(target.suiciding || target.hellbound || HAS_TRAIT(target, TRAIT_HUSK)) + if(target.suiciding || (target.mind && HAS_TRAIT(target.mind, TRAIT_HELLBOUND)) || HAS_TRAIT(target, TRAIT_HUSK)) return FALSE var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN) if(!B) diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 4c91f7f05811..d07b763ad803 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -273,11 +273,6 @@ max_damage = 500 animal_origin = ALIEN_BODYPART -/obj/item/bodypart/head/devil - dismemberable = 0 - max_damage = 5000 - animal_origin = DEVIL_BODYPART - /obj/item/bodypart/head/larva icon = 'icons/mob/animal_parts.dmi' icon_state = "larva_head" diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index 199aeffaae44..c1604dabf593 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -41,11 +41,6 @@ max_damage = 500 animal_origin = ALIEN_BODYPART -/obj/item/bodypart/chest/devil - dismemberable = 0 - max_damage = 5000 - animal_origin = DEVIL_BODYPART - /obj/item/bodypart/chest/larva icon = 'icons/mob/animal_parts.dmi' icon_state = "larva_chest" @@ -144,12 +139,6 @@ dismemberable = FALSE can_be_disabled = FALSE -/obj/item/bodypart/l_arm/devil - max_damage = 5000 - animal_origin = DEVIL_BODYPART - dismemberable = FALSE - can_be_disabled = FALSE - /obj/item/bodypart/r_arm name = "right arm" desc = "Over 87% of humans are right handed. That figure is much lower \ @@ -239,12 +228,6 @@ dismemberable = FALSE can_be_disabled = FALSE -/obj/item/bodypart/r_arm/devil - max_damage = 5000 - animal_origin = DEVIL_BODYPART - dismemberable = FALSE - can_be_disabled = FALSE - /obj/item/bodypart/l_leg name = "left leg" desc = "Some athletes prefer to tie their left shoelaces first for good \ @@ -326,11 +309,6 @@ dismemberable = FALSE can_be_disabled = FALSE -/obj/item/bodypart/l_leg/devil - max_damage = 5000 - animal_origin = DEVIL_BODYPART - dismemberable = FALSE - can_be_disabled = FALSE /obj/item/bodypart/r_leg name = "right leg" @@ -414,9 +392,3 @@ animal_origin = ALIEN_BODYPART dismemberable = FALSE can_be_disabled = FALSE - -/obj/item/bodypart/r_leg/devil - max_damage = 5000 - animal_origin = DEVIL_BODYPART - dismemberable = FALSE - can_be_disabled = FALSE diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index f0ac4ec518ed..fa8f315fe4aa 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -13,7 +13,7 @@ /datum/surgery_step/dissection, /datum/surgery_step/close) possible_locs = list(BODY_ZONE_CHEST) - target_mobtypes = list(/mob/living) //Feel free to dissect devils but they're magic. + target_mobtypes = list(/mob/living) replaced_by = /datum/surgery/experimental_dissection/adv requires_tech = FALSE var/value_multiplier = 1 diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index d551eb117b5b..ecc056612dde 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -189,15 +189,7 @@ for(var/V in listeners) var/mob/living/L = V - var/datum/antagonist/devil/devilinfo = is_devil(L) - if(devilinfo && findtext(message, devilinfo.truename)) - var/start = findtext(message, devilinfo.truename) - listeners = list(L) //Devil names are unique. - power_multiplier *= 5 //if you're a devil and god himself addressed you, you fucked up - //Cut out the name so it doesn't trigger commands - message = copytext(message, 1, start) + copytext(message, start + length(devilinfo.truename)) - break - else if(findtext(message, L.real_name, 1, length(L.real_name) + 1)) + if(findtext(message, L.real_name, 1, length(L.real_name) + 1)) specific_listeners += L //focus on those with the specified name //Cut out the name so it doesn't trigger commands found_string = L.real_name @@ -387,13 +379,7 @@ cooldown = COOLDOWN_MEME for(var/V in listeners) var/mob/living/L = V - var/text = "" - if(is_devil(L)) - var/datum/antagonist/devil/devilinfo = is_devil(L) - text = devilinfo.truename - else - text = L.real_name - addtimer(CALLBACK(L, /atom/movable/proc/say, text), 5 * i) + addtimer(CALLBACK(L, /atom/movable/proc/say, L.real_name), 5 * i) i++ //SAY MY NAME diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index 8cc452f225d21beece0c08570793f1b31f0cdac2..171b975ab107caed7b365fc89eab9a84b2e252a6 100644 GIT binary patch literal 91539 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 literal 122080 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 diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/devil.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/devil.ts deleted file mode 100644 index 9ddd1e7763cc..000000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/devil.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Antagonist, Category } from "../base"; -import { multiline } from "common/string"; - -export const DEVIL_MECHANICAL_DESCRIPTION - = multiline` - Make deals with crew members to slowly accrue power, but be wary of revealing your weaknesses. - As you collect more contracts, your disguise will fall away, and the mortals will grow desperate in their pursuit to banish you. - `; - - -const Devil: Antagonist = { - key: "devil", - name: "Devil", - description: [ - multiline` - The Fallen Angel, Lucifer, is a fine friend to those down on fortune, and you are one of his many agents. - While you can take several forms, you don one of a corporate worker to infiltrate a pit of despondency. - The poor souls have little to live for; temptation should prove simple. - `, - DEVIL_MECHANICAL_DESCRIPTION, - ], - category: Category.Roundstart, - priority: -1, -}; - -export default Devil; diff --git a/yogstation.dme b/yogstation.dme index 1d4632a51ae4..0f26dcba9c93 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -280,7 +280,6 @@ #include "code\_onclick\hud\blobbernauthud.dm" #include "code\_onclick\hud\constructs.dm" #include "code\_onclick\hud\credits.dm" -#include "code\_onclick\hud\devil.dm" #include "code\_onclick\hud\drones.dm" #include "code\_onclick\hud\fullscreen.dm" #include "code\_onclick\hud\generic_dextrous.dm" @@ -437,7 +436,6 @@ #include "code\datums\ruins.dm" #include "code\datums\saymode.dm" #include "code\datums\shuttles.dm" -#include "code\datums\soullink.dm" #include "code\datums\spawners_menu.dm" #include "code\datums\verbs.dm" #include "code\datums\view.dm" @@ -805,10 +803,6 @@ #include "code\game\gamemodes\clown_ops\clown_weapons.dm" #include "code\game\gamemodes\clown_ops\honkmother.dm" #include "code\game\gamemodes\cult\cult.dm" -#include "code\game\gamemodes\devil\devil_game_mode.dm" -#include "code\game\gamemodes\devil\game_mode.dm" -#include "code\game\gamemodes\devil\objectives.dm" -#include "code\game\gamemodes\devil\devil agent\devil_agent.dm" #include "code\game\gamemodes\dynamic\dynamic.dm" #include "code\game\gamemodes\dynamic\dynamic_hijacking.dm" #include "code\game\gamemodes\dynamic\dynamic_logging.dm" @@ -1735,13 +1729,6 @@ #include "code\modules\antagonists\demon\sins\greed.dm" #include "code\modules\antagonists\demon\sins\pride.dm" #include "code\modules\antagonists\demon\sins\wrath.dm" -#include "code\modules\antagonists\devil\devil.dm" -#include "code\modules\antagonists\devil\devil_helpers.dm" -#include "code\modules\antagonists\devil\imp\imp.dm" -#include "code\modules\antagonists\devil\sintouched\objectives.dm" -#include "code\modules\antagonists\devil\sintouched\sintouched.dm" -#include "code\modules\antagonists\devil\true_devil\_true_devil.dm" -#include "code\modules\antagonists\devil\true_devil\inventory.dm" #include "code\modules\antagonists\disease\disease_abilities.dm" #include "code\modules\antagonists\disease\disease_datum.dm" #include "code\modules\antagonists\disease\disease_disease.dm" @@ -2194,7 +2181,6 @@ #include "code\modules\events\communications_blackout.dm" #include "code\modules\events\creep_awakening.dm" #include "code\modules\events\darkspawn.dm" -#include "code\modules\events\devil.dm" #include "code\modules\events\disease_outbreak.dm" #include "code\modules\events\dust.dm" #include "code\modules\events\electrical_storm.dm" @@ -3018,7 +3004,6 @@ #include "code\modules\NTNet\services\_service.dm" #include "code\modules\paperwork\carbonpaper.dm" #include "code\modules\paperwork\clipboard.dm" -#include "code\modules\paperwork\contract.dm" #include "code\modules\paperwork\faxmachine.dm" #include "code\modules\paperwork\filingcabinet.dm" #include "code\modules\paperwork\folders.dm" @@ -3419,8 +3404,6 @@ #include "code\modules\shuttle\shuttle_creation\shuttle_creator_overlay.dm" #include "code\modules\shuttle\shuttle_creation\shuttle_upgrades.dm" #include "code\modules\spells\spell.dm" -#include "code\modules\spells\spell_types\devil.dm" -#include "code\modules\spells\spell_types\devil_boons.dm" #include "code\modules\spells\spell_types\hivemind.dm" #include "code\modules\spells\spell_types\madness_curse.dm" #include "code\modules\spells\spell_types\right_and_wrong.dm" diff --git a/yogstation/code/_globalvars/lists/maintenance_loot.dm b/yogstation/code/_globalvars/lists/maintenance_loot.dm index 3267bbec6c9d..54ca8dbd2614 100644 --- a/yogstation/code/_globalvars/lists/maintenance_loot.dm +++ b/yogstation/code/_globalvars/lists/maintenance_loot.dm @@ -427,7 +427,7 @@ GLOBAL_LIST_INIT(maintenance_loot_traditional,list( /obj/item/twohanded/vxtvulhammer/toy = W_RARE, /obj/item/toy/syndicateballoon = W_RARE, /obj/item/toy/talking/AI = W_RARE, - /obj/item/toy/talking/codex_gigas = W_RARE, + /obj/item/toy/codex_gigas = W_RARE, /obj/item/toy/talking/griffin = W_RARE, /obj/item/toy/talking/owl = W_RARE, /obj/item/toy/toy_dagger = W_RARE,