From 24f47b0223bc8656fff6fb3a5fd21d85342dbeed Mon Sep 17 00:00:00 2001 From: lordpidey Date: Sun, 8 May 2016 13:44:27 -0400 Subject: [PATCH] Devil Antag Round 2. (#15794) * Re-making the branch and PR of demon. See #15118 for the old PR * Adds toy demonologist to arcade machine reward list. * Implemented two suggestions: Pitchfork now has a demonic subtype, to potentially give botanists a normal pitchfork. Suiciding with signed contract now uses forcesay instead of say. * Fixes compile errors. Re factors contracts to be subtypes rather than datums. <--- incomplete, still need to summon them appropriately. * buffed infernal power contract to give passive healing Nerfed magic power contract to not give robeless MM * Fixes compile errors * Corrects orientation of true demon sprite * Begins work on the sNPC for the true demon/ arch-demon * Added funeral garment sprites. These will be used in banishment rituals (hopefully) * Stashing my work so I can move to another computer. Re-working the true-demon, it will be a carbon rather than a simple mob. * Revert "Stashing my work so I can move to another computer." This reverts commit e8b1e032997b7e17af4ad8630bf21d3620195c4e. * Git exploded for me, so I have to make a new branch with EVERYTHING. sorry. * Fixes compile error * Ghosts can now click on an arch demon to become a slaughter demon * Begins to convert demons into a carbon rather than simple mob. * Demons now resurrect if not banished. * Beepsky now properly tells security chat about the level 666 threat. * Contracts now work again. * old spells now get removed properly. * adding pitchfork sprites * Adds hud for the true-demon. Not functional. * Fixes another error in the demon hud. Still broken. * Demons are no longer immortal, demon huds work properly now. (it's barebones, but it works.) * Fixes the "Have mortals sign at least # contracts of TYPE" objective * Fixed typo in banishlore() and updated wrath/envy sintouch objectives. * Adds huds for demons/sintouched/soulless, however they are currently unused. * Updates the demon's hud to work with the recent hud changes. * Cleaned up infernal jaunt, it works a lot better now and is less buggy. * Revival contracts now actually take your soul. * Fixes #16513 * Replaces the infinite slaughter demons with infinite imps. Sprites for imps are still needed. * Adds sprite for imps. It's a redder, smaller slaughter demon. * Fixes lack of icon for pitchforks * Gives summon wealth a more appropriate icon. * Fixes small part I forgot to merge. * Fixes a few bugs with demonic resurrection. It's still very buggy. * Derp, my bad, I didn't mean to admin myself on the main server. * Fixes edge case of demonic resurrection failing. Debraining the demon is NOT supposed to be an alternative for the banishment ritual. * Also did not mean to change this config file. * Fixes another error in type 1 demonic resurrection. It works properly now. * Updates employment contract text. * Fixes type 2 resurrections. Demonic contracts are once again permanently on fire. * Replaces toy demonologist with toy demonomicon. It still works the same, just different icon/name. * Adds demonomicon and employment cabinet to box/meta/dream/efficiency. I could not add it to mini/bird due to conflicts. * Edits ministation and BirdStation to have demonomicons and employment cabinets. * Fixes spelling error * Adds burial garments to maps. * Update photocopier.dm Fixes the span when inserting items into photocopier * Fixes disrupt_spells proc * Makes a lot of changes as reccomended by Remie. * Fixes a compile error. * Updates the lawify/loreify to be lists. Does not compile. * Fixes compile errors. * Arch demons no longer regress upon death. Speaking a demon's truename gives the demon the opportunity to teleport to you. Makes demonomicon not care about capitalization. * Fixes startup error. Demonic summoning now works. It's very simple, just say their true name. * Demons now have a tongue. True demon bodies are deleted upon regression. * Demons can now be punched. Demons can no longer resist a fire out, since it does nothing to them. * true demons show up in player panel. Hellfire works again. * Prepares for commit 16940 * Demons are now known as devils. Still needs testing. * Oops, didn't commit everything last commit. * Finishes converting demons to devils. * Fixes speech for lizards/flymen when they speak a demon's name. * Update tips.txt * Changes variable from static to global as per Remie's suggestion. I disagree with Remie's assessment, as a list that will never change, even between games, seems like it should be static. * Removes devil summoning. Hopefully, I'll be able to eventually find a way to implement it satisfactorily, but for now, I'll leave it out. * Removes carriage returns * Combined modified icon files * Fixes #17184 * Imps no longer show up in the end round report. This is because there can EASILY be 100+ imps if the crew is well armed. Non-employment filing cabinets no longer take 30 sec to wrench/unwrench. * The lawyer can actually buy souls back now. Oops. * Fixes true/arch devil spritesheet to have correct sprite names. * Relocates Box's employment cabinet to Law office. * De-devil-ing someone now removes the devilinfo. De-devil-ing now returns an error when used on true and arch devils * Re-factors whiteness code for jumpsuits. * Merges icons, reverts failed merge of map * Merges map with CAS decks * Fixes copying employment contracts * Derp, fixes compile error. * Replaces antaghud with customizable vision range for knowledge boon. * Prevents a runtime if devil is gibbed while ascending. * Neatens contract code, and removes excess variable from humans. * Fixes compile errors * Organizes weakness code slightly. Adds ability for a species override on weakness. (Make flypeople take 2x damage from flyswatters for example) * Removes sixteen erroneous characters from the codebase. * Removes trailing return * Makes typeless for loops, removes a runtime, and removes unhelpful comments. --- _maps/map_files/BirdStation/BirdStation.dmm | 7 +- .../map_files/DreamStation/dreamstation04.dmm | 10 +- .../EfficiencyStation/EfficiencyStation.dmm | 14 +- .../MetaStation/MetaStation.v41I.dmm | 30 +- _maps/map_files/MiniStation/MiniStation.dmm | 15 +- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 3 +- code/__DEFINES/contracts.dm | 42 + code/__DEFINES/hud.dm | 25 +- code/__DEFINES/role_preferences.dm | 2 + code/__HELPERS/unsorted.dm | 2 + code/_onclick/hud/demon.dm | 75 + code/datums/datacore.dm | 1 + code/datums/hud.dm | 3 + code/datums/mind.dm | 83 +- code/game/area/Space Station 13 areas.dm | 19 + code/game/gamemodes/demon/demon.dm | 40 + code/game/gamemodes/demon/demon_game_mode.dm | 108 + code/game/gamemodes/demon/demoninfo.dm | 413 +++ code/game/gamemodes/demon/imp/imp.dm | 56 + code/game/gamemodes/demon/objectives.dm | 62 + .../gamemodes/demon/true_demon/_true_demon.dm | 195 ++ .../gamemodes/demon/true_demon/inventory.dm | 61 + .../miniantags/sintouched/objectives.dm | 35 + code/game/machinery/cloning.dm | 2 +- code/game/machinery/computer/arcade.dm | 2229 +++++++++-------- code/game/machinery/computer/cloning.dm | 2 +- code/game/machinery/dna_scanner.dm | 2 +- code/game/objects/items/toys.dm | 24 + code/game/objects/items/weapons/defib.dm | 4 +- code/game/objects/items/weapons/twohanded.dm | 61 + code/modules/admin/admin.dm | 8 + code/modules/admin/player_panel.dm | 31 +- code/modules/admin/topic.dm | 3 + code/modules/clothing/clothing.dm | 1 - code/modules/clothing/under/jobs/medsci.dm | 2 +- code/modules/clothing/under/miscellaneous.dm | 7 + code/modules/food&drinks/food/snacks.dm | 2 + code/modules/hydroponics/grown/replicapod.dm | 6 + code/modules/library/lib_demonomicon.dm | 56 + code/modules/mob/living/carbon/carbon.dm | 6 + code/modules/mob/living/carbon/human/death.dm | 5 +- .../mob/living/carbon/human/examine.dm | 2 + code/modules/mob/living/carbon/human/human.dm | 38 + .../mob/living/carbon/human/species.dm | 6 +- code/modules/mob/living/carbon/life.dm | 2 +- code/modules/mob/living/living.dm | 30 +- code/modules/mob/living/living_defines.dm | 2 + .../mob/living/simple_animal/bot/secbot.dm | 1 + code/modules/mob/mob.dm | 6 +- code/modules/mob/new_player/new_player.dm | 10 + code/modules/mob/transform_procs.dm | 4 + code/modules/paperwork/contract.dm | 265 ++ code/modules/paperwork/filingcabinet.dm | 58 + code/modules/paperwork/photocopier.dm | 57 +- code/modules/projectiles/projectile/magic.dm | 2 + .../chemistry/reagents/food_reagents.dm | 6 + .../chemistry/reagents/medicine_reagents.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 16 + code/modules/reagents/reagent_containers.dm | 3 +- code/modules/spells/spell_types/demon.dm | 167 ++ .../modules/spells/spell_types/demon_boons.dm | 44 + code/modules/spells/spell_types/dumbfire.dm | 4 +- config/admins.txt | 1 + config/tips.txt | 3 + icons/mob/32x64.dmi | Bin 0 -> 3779 bytes icons/mob/actions.dmi | Bin 82493 -> 83321 bytes icons/mob/hud.dmi | Bin 11141 -> 11279 bytes icons/mob/inhands/items_lefthand.dmi | Bin 115221 -> 115936 bytes icons/mob/inhands/items_righthand.dmi | Bin 111362 -> 112084 bytes icons/mob/mob.dmi | Bin 251087 -> 253167 bytes icons/mob/uniform.dmi | Bin 218200 -> 219140 bytes icons/obj/bureaucracy.dmi | Bin 20768 -> 21256 bytes icons/obj/clothing/uniforms.dmi | Bin 49371 -> 49725 bytes icons/obj/library.dmi | Bin 22451 -> 23476 bytes icons/obj/weapons.dmi | Bin 44868 -> 45166 bytes tgstation.dme | 17 +- 76 files changed, 3307 insertions(+), 1191 deletions(-) create mode 100644 code/__DEFINES/contracts.dm create mode 100644 code/_onclick/hud/demon.dm create mode 100644 code/game/gamemodes/demon/demon.dm create mode 100644 code/game/gamemodes/demon/demon_game_mode.dm create mode 100644 code/game/gamemodes/demon/demoninfo.dm create mode 100644 code/game/gamemodes/demon/imp/imp.dm create mode 100644 code/game/gamemodes/demon/objectives.dm create mode 100644 code/game/gamemodes/demon/true_demon/_true_demon.dm create mode 100644 code/game/gamemodes/demon/true_demon/inventory.dm create mode 100644 code/game/gamemodes/miniantags/sintouched/objectives.dm create mode 100644 code/modules/library/lib_demonomicon.dm create mode 100644 code/modules/paperwork/contract.dm create mode 100644 code/modules/spells/spell_types/demon.dm create mode 100644 code/modules/spells/spell_types/demon_boons.dm create mode 100644 icons/mob/32x64.dmi diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm index 2ce75a3cb31..b08b7ff7e43 100644 --- a/_maps/map_files/BirdStation/BirdStation.dmm +++ b/_maps/map_files/BirdStation/BirdStation.dmm @@ -897,7 +897,7 @@ "arm" = (/obj/structure/cable/cyan{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/hallway/primary/port{name = "\improper Northwest Hallway"}) "arn" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/door/poddoor/shutters/preopen{id = "hop shutter"; name = "HoP Office shutter"},/turf/open/floor/plating,/area/crew_quarters/heads) "aro" = (/obj/structure/table/wood,/obj/item/weapon/storage/box/silver_ids{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/ids,/turf/open/floor/wood,/area/crew_quarters/heads) -"arp" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin{pixel_x = 0; pixel_y = 7},/turf/open/floor/wood,/area/crew_quarters/heads) +"arp" = (/obj/structure/filingcabinet/employment,/turf/open/floor/wood,/area/crew_quarters/heads) "arq" = (/obj/machinery/vending/cart,/turf/open/floor/wood,/area/crew_quarters/heads) "arr" = (/obj/machinery/photocopier,/obj/machinery/light{dir = 1},/turf/open/floor/wood,/area/crew_quarters/heads) "ars" = (/obj/structure/closet/secure_closet/hop,/obj/item/clothing/suit/armor/reactive,/turf/open/floor/wood,/area/crew_quarters/heads) @@ -1276,7 +1276,7 @@ "ayB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel/black,/area/engine/gravity_generator) "ayC" = (/obj/structure/cable/cyan{icon_state = "1-2"},/turf/open/floor/plasteel/black,/area/engine/gravity_generator) "ayD" = (/obj/effect/landmark{name = "lightsout"},/turf/open/floor/wood,/area/library) -"ayE" = (/obj/structure/table/wood,/obj/item/weapon/storage/pill_bottle/dice,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/open/floor/wood,/area/library) +"ayE" = (/obj/structure/table/wood,/obj/item/weapon/book/codex_gigas,/obj/item/weapon/storage/pill_bottle/dice,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/open/floor/wood,/area/library) "ayF" = (/obj/effect/landmark/start{name = "Clown"},/turf/open/floor/wood,/area/crew_quarters/theatre) "ayG" = (/turf/open/floor/wood,/area/crew_quarters/theatre) "ayH" = (/obj/machinery/camera/autoname{dir = 8},/turf/open/floor/wood,/area/crew_quarters/theatre) @@ -2951,6 +2951,7 @@ "beO" = (/obj/structure/window/reinforced,/obj/machinery/flasher/portable,/obj/machinery/flasher/portable,/obj/machinery/flasher/portable,/obj/machinery/flasher/portable,/obj/machinery/flasher/portable,/obj/machinery/flasher/portable,/turf/open/floor/plasteel/black,/area/security/warden) "beP" = (/obj/structure/table,/obj/item/clothing/glasses/science,/turf/open/floor/plasteel,/area/toxins/misc_lab) "beQ" = (/obj/effect/decal/cleanable/blood/old,/obj/item/clothing/glasses/sunglasses,/turf/open/floor/wood{icon_state = "wood-broken"},/area/maintenance/fore{name = "Security Maintenance"}) +"ZAx" = (/obj/structure/table, /obj/item/clothing/under/burial, /obj/item/clothing/under/burial, /obj/item/clothing/under/burial, /obj/item/clothing/under/burial, /obj/item/clothing/under/burial, /obj/item/clothing/under/burial, /turf/open/floor/plating,/area/maintenance/asmaint2) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -3126,7 +3127,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJaaJaaJaaJaaJaaJaaaaaJaaJaaJaaaaaaaaaaaaaaJaaJaaJaaJaPHaPHaPHaPHaPHaPHaRkaRkaPHaaaaaaaVmbbHaVmaaaaayaaaaaaaaaaaaaaBaaaaaaaayaaaaaaaZrbcqbcraZraZraZraZraZrbagazLaAxaAZaNEaAxbcsaAxaAxaAxaAxazLaFsaBRaRZaRZaBRazLazLazLazLazLazLazLazLazLazLazLazLazLazLazLazLazLazLaZxazLazLaaJaaJaaJaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaaaayaaaaaaaaaaPHbctbctaPHaaaaaaaaaaaTaaaaaaaayaaaaaaaaaaaaaaBaaaaaaaayaaaaaaaZrbaSbcubcvbchbchbcwbcxbaSbcyaAxbbyaHGaAxbczaAxbcAaAxaBbaFCaBbaBbbcBbcBaAxbczbcjbcjbcjazLaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJbcCaaJaaJaaJaaJaaJaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaayaayaayaayaayaPHaQqaQqaPHaayaayaaybcDamzaaBaaBaaBaaBaaBaaBaaBaayaguaguaguaayaZrbaSbcEbcFbcFbcGbcGbcGbcGbcHaDiaDibcIaDibcIaDiaDiaDiaDjbcJaDjaDjaDjaDjaDibcIbcKbcKbcLaTTbcMbcMbcMbcMbcMbcMbcMbcMbcMbcMbcMbcMbcMbcNaaJaaJaaJaaJaaJaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcObcPbcPbcQbcPbcPbcPbcRbcPbcPbcSaayaaaaPHbcTaQqaVmaaaaayaaaaaaaaaaaaaayaaaaaaaaaaaaaaBaaaaaaaaaaaaaaaaZraZraZrbcUbcUaZrbcVbcWbcXazLaAxaBTaAxaAxaAxbcjbcjbcYbcZazLazLazLazLazLazLazLazLazLazLazLaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcObcPbcPbcQbcPbcPbcPbcRbcPbcPbcSaayaaaaPHbcTaQqaVmaaaaayaaaaaaaaaaaaaayaaaaaaaaaaaaaaBaaaaaaaaaaaaaaaaZraZraZrbcUbcUaZrbcVbcWbcXazLaAxaBTaAxaAxZAxbcjbcjbcYbcZazLazLazLazLazLazLazLazLazLazLazLaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcObdabdbbdcbddbddbddbddbddbddbddbcQaVmaVmaVmaQqaQqaVmaaaaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaaaaaaaaaaaaaaaaaJaaJaZrbdebdeaZraZraZraZrazLazLazLaBRaBRaBRazLazLazLazLazLaaaaayaaaaaaaaaaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdfbdgbdgbdgbdgbdgbdgbdgbdgbdgbdgbdhbdibdjbdkaQqaQqaVmaaaaayaaaaaaaaaaaaaaaaaaaaaaaaaayaaBaayaaaaaaaaaaaaaaaaaJaZrbdebdebdlbdlbdmaZraaJaaJbdnaaaaaaaaaaayaaaaaaaaaaayaaaaayaayaayaayaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdobdpbdqbdqbdrbdrbdrbdrbdrbdrbdrbcQaVmaVmaVmaQqaQqaPHaaaaayaaaaaaaaaaaaaaaaaaaaaaaaaayaaBaayaaaaaaaaaaaaaaaaaJaZrbdsbdebdebdebdtaZraaJaaJaayaayaayaayaayaayaayaayaayaayaayaaaaaaaaaaaaaaJaaJaaJaaJaaJaaJaaaaaaaaaaaJaaJaaJaaaaaaaaaaaaaaaaaJaaJaaJaaJaaJaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm index d9b8f0cce5b..9f1dde54049 100644 --- a/_maps/map_files/DreamStation/dreamstation04.dmm +++ b/_maps/map_files/DreamStation/dreamstation04.dmm @@ -23727,7 +23727,7 @@ pixel_x = -30; pixel_y = 0 }, -/obj/structure/filingcabinet, +/obj/structure/filingcabinet/employment, /turf/open/floor/wood, /area/lawoffice) "aVu" = ( @@ -45512,6 +45512,7 @@ "bIQ" = ( /obj/structure/cult/tome, /obj/item/clothing/under/suit_jacket/red, +/obj/item/weapon/book/codex_gigas, /turf/open/floor/plasteel/cult, /area/library) "bIR" = ( @@ -62399,6 +62400,13 @@ dir = 2; pixel_y = 24 }, +/obj/structure/table/wood, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, /turf/open/floor/plasteel{ icon_state = "dark" }, diff --git a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm index b15f8f1c392..8e7fc5e4d84 100644 --- a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm +++ b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm @@ -39741,6 +39741,7 @@ /area/storage/art) "buT" = ( /obj/structure/cult/tome, +/obj/item/weapon/book/codex_gigas, /turf/open/floor/plasteel{ icon_state = "cult" }, @@ -48367,8 +48368,7 @@ name = "Chapel Maintenance" }) "bKq" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/decal/cleanable/cobweb, +/obj/structure/filingcabinet/employment, /turf/open/floor/wood, /area/lawoffice) "bKr" = ( @@ -57033,9 +57033,13 @@ }) "cay" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/robot_debris{ - icon_state = "gib6" - }, +/obj/structure/table, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, /turf/open/floor/plating, /area/maintenance/port{ name = "Chapel Maintenance" diff --git a/_maps/map_files/MetaStation/MetaStation.v41I.dmm b/_maps/map_files/MetaStation/MetaStation.v41I.dmm index 43d40cb3424..afe423895f5 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41I.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41I.dmm @@ -24449,12 +24449,12 @@ /turf/open/floor/wood, /area/lawoffice) "aNP" = ( -/obj/structure/filingcabinet/chestdrawer, /obj/machinery/airalarm{ dir = 8; icon_state = "alarm0"; pixel_x = 24 }, +/obj/structure/filingcabinet/employment, /turf/open/floor/wood, /area/lawoffice) "aNQ" = ( @@ -59349,6 +59349,7 @@ pixel_y = 0 }, /obj/item/clothing/under/suit_jacket/red, +/obj/item/weapon/book/codex_gigas, /turf/open/floor/plasteel{ icon_state = "cult"; dir = 2 @@ -100508,12 +100509,18 @@ }, /area/medical/morgue) "dfx" = ( -/obj/machinery/plantgenes, -/turf/open/floor/plasteel{ - dir = 9; - icon_state = "warning" +/obj/structure/window/reinforced{ + dir = 4 }, -/area/hydroponics) +/obj/structure/table/wood, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/turf/open/floor/plating, +/area/chapel/main) "dfy" = ( /turf/open/floor/engine/vacuum, /area/atmos) @@ -100615,6 +100622,13 @@ }, /turf/open/space, /area/space) +"dfI" = ( +/obj/machinery/plantgenes, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/hydroponics) (1,1,1) = {" aaa @@ -120851,7 +120865,7 @@ cOU cRS cRS cSP -cRS +dfx cOU cUb cOU @@ -136228,7 +136242,7 @@ bZc caw bZc ccX -dfx +dfI bVf cuS ciC diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm index 4220fed6d56..94f22215cc9 100644 --- a/_maps/map_files/MiniStation/MiniStation.dmm +++ b/_maps/map_files/MiniStation/MiniStation.dmm @@ -3510,6 +3510,7 @@ /obj/item/weapon/folder/red, /obj/item/weapon/hand_labeler, /obj/item/clothing/glasses/sunglasses, +/obj/item/weapon/book/codex_gigas, /turf/open/floor/carpet, /area/security/brig) "hn" = ( @@ -10216,7 +10217,7 @@ /area/crew_quarters/bar) "uW" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/filingcabinet/chestdrawer, +/obj/structure/filingcabinet/employment, /turf/open/floor/plasteel, /area/crew_quarters/heads{ name = "\improper Job Assignment" @@ -16130,6 +16131,16 @@ }, /turf/open/floor/plasteel, /area/security/brig) +"IL" = ( +/obj/structure/table, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/obj/item/clothing/under/burial, +/turf/open/floor/plating, +/area/hallway/primary/central) (1,1,1) = {" aa @@ -46085,7 +46096,7 @@ nC jo bx bN -bN +IL bx ps rE diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index ee5c7cfc719..355c2d64f14 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -9082,10 +9082,10 @@ /turf/open/floor/carpet, /area/security/detectives_office) "arV" = ( -/obj/structure/filingcabinet/chestdrawer, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/filingcabinet/employment, /turf/open/floor/wood, /area/lawoffice) "arW" = ( @@ -20527,6 +20527,7 @@ "aQs" = ( /obj/structure/cult/tome, /obj/item/clothing/under/suit_jacket/red, +/obj/item/weapon/book/codex_gigas, /turf/open/floor/plasteel{ icon_state = "cult"; dir = 2 diff --git a/code/__DEFINES/contracts.dm b/code/__DEFINES/contracts.dm new file mode 100644 index 00000000000..cba98a29b24 --- /dev/null +++ b/code/__DEFINES/contracts.dm @@ -0,0 +1,42 @@ +#define CONTRACT_POWER "power" +#define CONTRACT_WEALTH "wealth" +#define CONTRACT_PRESTIGE "prestige" +#define CONTRACT_MAGIC "magic" +#define CONTRACT_REVIVE "revive" +#define CONTRACT_KNOWLEDGE "knowledge" +#define CONTRACT_UNWILLING "unwilling" + +#define BANE_SALT "salt" +#define BANE_LIGHT "light" +#define BANE_IRON "iron" +#define BANE_WHITECLOTHES "whiteclothes" +#define BANE_SILVER "silver" +#define BANE_HARVEST "harvest" +#define BANE_TOOLBOX "toolbox" + +#define OBLIGATION_FOOD "food" +#define OBLIGATION_DRINK "drink" +#define OBLIGATION_GREET "greet" +#define OBLIGATION_PRESENCEKNOWN "presenceknown" +#define OBLIGATION_SAYNAME "sayname" +#define OBLIGATION_ANNOUNCEKILL "announcekill" +#define OBLIGATION_ANSWERTONAME "answername" + +#define BAN_HURTWOMAN "hurtwoman" +#define BAN_CHAPEL "chapel" +#define BAN_HURTPRIEST "hurtpriest" +#define BAN_AVOIDWATER "avoidwater" +#define BAN_STRIKEUNCONCIOUS "strikeunconcious" +#define BAN_HURTLIZARD "hurtlizard" +#define BAN_HURTANIMAL "hurtanimal" + +#define BANISH_WATER "water" +#define BANISH_COFFIN "coffin" +#define BANISH_FORMALDYHIDE "embalm" +#define BANISH_RUNES "runes" +#define BANISH_CANDLES "candles" +#define BANISH_DESTRUCTION "destruction" +#define BANISH_FUNERAL_GARB "funeral" + +#define LORE 1 +#define LAW 2 \ No newline at end of file diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 9ca921c0cda..27252048b47 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -25,14 +25,17 @@ #define DATA_HUD_MEDICAL_ADVANCED 4 #define DATA_HUD_DIAGNOSTIC 5 //antag HUD defines -#define ANTAG_HUD_CULT 6 -#define ANTAG_HUD_REV 7 -#define ANTAG_HUD_OPS 8 -#define ANTAG_HUD_WIZ 9 -#define ANTAG_HUD_SHADOW 10 -#define ANTAG_HUD_HOG_BLUE 11 -#define ANTAG_HUD_HOG_RED 12 -#define ANTAG_HUD_TRAITOR 13 -#define ANTAG_HUD_NINJA 14 -#define ANTAG_HUD_CHANGELING 15 -#define ANTAG_HUD_ABDUCTOR 16 +#define ANTAG_HUD_CULT 6 +#define ANTAG_HUD_REV 7 +#define ANTAG_HUD_OPS 8 +#define ANTAG_HUD_WIZ 9 +#define ANTAG_HUD_SHADOW 10 +#define ANTAG_HUD_HOG_BLUE 11 +#define ANTAG_HUD_HOG_RED 12 +#define ANTAG_HUD_TRAITOR 13 +#define ANTAG_HUD_NINJA 14 +#define ANTAG_HUD_CHANGELING 15 +#define ANTAG_HUD_ABDUCTOR 16 +#define ANTAG_HUD_DEVIL 17 +#define ANTAG_HUD_SINTOUCHED 18 +#define ANTAG_HUD_SOULLESS 19 diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 916ff182f3c..980436018c6 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -24,6 +24,7 @@ #define ROLE_REVENANT "revenant" #define ROLE_HOG_GOD "hand of god: god" #define ROLE_HOG_CULTIST "hand of god: cultist" +#define ROLE_DEVIL "devil" //Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR. @@ -48,4 +49,5 @@ var/global/list/special_roles = list( ROLE_ABDUCTOR = /datum/game_mode/abduction, ROLE_HOG_GOD = /datum/game_mode/hand_of_god, ROLE_HOG_CULTIST = /datum/game_mode/hand_of_god, + ROLE_DEVIL = /datum/game_mode/devil ) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index ce70339a466..5058f8ace1f 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -355,6 +355,8 @@ Turf and target are seperate in case you want to teleport some distance from a t // mob_list.Add(M) // for(var/mob/living/silicon/hive_mainframe/M in world) // mob_list.Add(M) + for(var/mob/living/carbon/true_devil/M in sortmob) + moblist.Add(M) return moblist //E = MC^2 diff --git a/code/_onclick/hud/demon.dm b/code/_onclick/hud/demon.dm new file mode 100644 index 00000000000..fc0d923e080 --- /dev/null +++ b/code/_onclick/hud/demon.dm @@ -0,0 +1,75 @@ +/datum/hud/devil/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi') + ..() + var/obj/screen/using + var/obj/screen/inventory/inv_box + + using = new /obj/screen/drop() + using.icon = ui_style + using.screen_loc = ui_drone_drop + static_inventory += using + + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style + pull_icon.update_icon(mymob) + pull_icon.screen_loc = ui_drone_pull + static_inventory += pull_icon + + inv_box = new /obj/screen/inventory/hand() + inv_box.name = "right hand" + inv_box.icon = ui_style + inv_box.icon_state = "hand_r" + inv_box.screen_loc = ui_rhand + inv_box.slot_id = slot_r_hand + static_inventory += inv_box + + inv_box = new /obj/screen/inventory/hand() + inv_box.name = "left hand" + inv_box.icon = ui_style + inv_box.icon_state = "hand_l" + inv_box.screen_loc = ui_lhand + inv_box.slot_id = slot_l_hand + static_inventory += inv_box + + using = new /obj/screen/inventory() + using.name = "hand" + using.icon = ui_style + using.icon_state = "swap_1_m" + using.screen_loc = ui_swaphand1 + using.layer = 19 + static_inventory += using + + using = new /obj/screen/inventory() + using.name = "hand" + using.icon = ui_style + using.icon_state = "swap_2" + using.screen_loc = ui_swaphand2 + using.layer = 19 + static_inventory += using + + zone_select = new /obj/screen/zone_sel() + zone_select.icon = ui_style + zone_select.update_icon(mymob) + + lingchemdisplay = new /obj/screen/ling/chems() + +/datum/hud/devil/persistant_inventory_update() + if(!mymob) + return + var/mob/living/carbon/true_devil/D = mymob + + if(hud_version != HUD_STYLE_NOHUD) + if(D.r_hand) + D.r_hand.screen_loc = ui_rhand + D.client.screen += D.r_hand + if(D.l_hand) + D.l_hand.screen_loc = ui_lhand + D.client.screen += D.l_hand + else + if(D.r_hand) + D.r_hand.screen_loc = null + if(D.l_hand) + D.l_hand.screen_loc = null + +/mob/living/carbon/true_devil/create_mob_hud() + if(client && !hud_used) + hud_used = new /datum/hud/devil(src, ui_style2icon(client.prefs.UI_style)) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 89d3e04808f..742c700ebb9 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -262,6 +262,7 @@ var/record_id_num = 1001 L.fields["species"] = H.dna.species.type L.fields["features"] = H.dna.features L.fields["image"] = image + L.fields["reference"] = H locked += L return diff --git a/code/datums/hud.dm b/code/datums/hud.dm index 8698e29a382..2b7eee8a730 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -18,6 +18,9 @@ var/datum/atom_hud/huds = list( \ ANTAG_HUD_NINJA = new/datum/atom_hud/antag/hidden(),\ ANTAG_HUD_CHANGELING = new/datum/atom_hud/antag/hidden(),\ ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden(),\ + ANTAG_HUD_DEVIL = new/datum/atom_hud/antag(),\ + ANTAG_HUD_SINTOUCHED = new/datum/atom_hud/antag/hidden(),\ + ANTAG_HUD_SOULLESS = new/datum/atom_hud/antag/hidden(),\ ) /datum/atom_hud diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 1587bc4b8d2..60d4d992d88 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -57,9 +57,13 @@ var/antag_hud_icon_state = null //this mind's ANTAG_HUD should have this icon_state var/datum/atom_hud/antag/antag_hud = null //this mind's antag HUD var/datum/gang/gang_datum //Which gang this mind belongs to, if any + var/datum/devilinfo/devilinfo //Information about the devil, if any. + var/damnation_type = 0 + var/datum/mind/soulOwner //who owns the soul. Under normal circumstances, this will point to src /datum/mind/New(var/key) src.key = key + soulOwner = src /datum/mind/proc/transfer_to(mob/new_character, var/force_key_move = 0) @@ -539,6 +543,24 @@ sections["monkey"] = text + /** devil ***/ + text = "devil" + if(ticker.mode.config_tag == "devil") + text = uppertext(text) + text = "[text]: " + if(src in ticker.mode.devils) + text += "DEVIL|sintouched|human" + else if(src in ticker.mode.sintouched) + text += "devil|SINTOUCHED|human" + else + text += "devil|sintouched|HUMAN" + + if(current && current.client && (ROLE_DEVIL in current.client.prefs.be_special)) + text += "|Enabled in Prefs" + else + text += "|Disabled in Prefs" + sections["devil"] = text + /** SILICON ***/ @@ -1163,6 +1185,45 @@ message_admins("[key_name_admin(usr)] has thrall'ed [current].") log_admin("[key_name(usr)] has thrall'ed [current].") + else if(href_list["devil"]) + switch(href_list["devil"]) + if("clear") + if(src in ticker.mode.devils) + if(istype(current,/mob/living/carbon/true_devil/)) + usr << "This cannot be used on true or arch-devils." + else + ticker.mode.devils -= src + special_role = null + current << "Your infernal link has been severed! You are no longer a devil!" + RemoveSpell(/obj/effect/proc_holder/spell/targeted/infernal_jaunt) + RemoveSpell(/obj/effect/proc_holder/spell/dumbfire/fireball/hellish) + RemoveSpell(/obj/effect/proc_holder/spell/targeted/summon_contract) + RemoveSpell(/obj/effect/proc_holder/spell/targeted/summon_pitchfork) + message_admins("[key_name_admin(usr)] has de-devil'ed [current].") + devilinfo = null + log_admin("[key_name(usr)] has de-devil'ed [current].") + else if(src in ticker.mode.sintouched) + ticker.mode.sintouched -= src + message_admins("[key_name_admin(usr)] has de-sintouch'ed [current].") + log_admin("[key_name(usr)] has de-sintouch'ed [current].") + if("devil") + if(!ishuman(current)) + usr << "This only works on humans!" + return + ticker.mode.devils += src + special_role = "devil" + ticker.mode.finalize_devil(src) + announceDevilLaws() + if("sintouched") + if(ishuman(current)) + ticker.mode.sintouched += src + var/mob/living/carbon/human/H = current + H.influenceSin() + message_admins("[key_name_admin(usr)] has sintouch'ed [current].") + else + usr << "This only works on humans!" + return + else if(href_list["abductor"]) switch(href_list["abductor"]) if("clear") @@ -1569,7 +1630,6 @@ ticker.mode.greet_hog_follower(src,colour) ticker.mode.update_hog_icons_added(src, colour) - /datum/mind/proc/make_Handofgod_god(colour) switch(colour) if("red") @@ -1611,6 +1671,25 @@ var/obj/effect/proc_holder/spell/S = X S.action.Grant(new_character) +/datum/mind/proc/disrupt_spells(delay, list/exceptions = New()) + for(var/X in spell_list) + var/obj/effect/proc_holder/spell/S = X + for(var/type in exceptions) + if(istype(S, type)) + continue + S.charge_counter = delay + spawn(0) + S.start_recharge() + +/datum/mind/proc/get_ghost(even_if_they_cant_reenter) + for(var/mob/dead/observer/G in dead_mob_list) + if(G.mind == src) + if(G.can_reenter_corpse || even_if_they_cant_reenter) + return G + break + + + /mob/proc/sync_mind() mind_initialize() //updates the mind (or creates and initializes one if one doesn't exist) mind.active = 1 //indicates that the mind is currently synced with a client @@ -1721,4 +1800,4 @@ /mob/living/simple_animal/hostile/construct/mind_initialize() ..() mind.assigned_role = "[initial(name)]" - mind.special_role = "Cultist" \ No newline at end of file + mind.special_role = "Cultist" diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 920d71870a2..bb4f8d28ffa 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1328,6 +1328,25 @@ var/list/teleportlocs = list() icon_state = "tcomsatlounge" +// Hell +/area/hell + name = "Hell Lobby" + //icon = "ICON FILENAME" + //icon_state = "NAME OF ICON" + requires_power = 0 + music = "music/music.ogg" + +/area/hell/trial1 + name = "Hell Trial1" + //icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) + +/area/hell/trial1 + name = "Hell Trial2" + //icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) + +/area/hell/trial1 + name = "Hell Trial3" + //icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) // Away Missions /area/awaymission diff --git a/code/game/gamemodes/demon/demon.dm b/code/game/gamemodes/demon/demon.dm new file mode 100644 index 00000000000..743e95ad910 --- /dev/null +++ b/code/game/gamemodes/demon/demon.dm @@ -0,0 +1,40 @@ +var/global/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 +) + + + +/mob/living/proc/check_devil_bane_multiplier(obj/item/weapon, mob/living/attacker) + switch(mind.devilinfo.bane) + if(BANE_WHITECLOTHES) + if(istype(attacker, /mob/living/carbon/human)) + 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 + if(whiteness[U.type]) + src.visible_message("[src] seems to have been harmed by the purity of [attacker]'s clothes.", "Unsullied white clothing is disrupting your form.") + return whiteness[U.type] + 1 + if(BANE_TOOLBOX) + if(istype(weapon,/obj/item/weapon/storage/toolbox)) + src.visible_message("The [weapon] seems unusually robust this time.", "The [weapon] is your unmaking!") + return 2.5 // Will take four hits with a normal toolbox. + if(BANE_HARVEST) + if(istype(weapon,/obj/item/weapon/reagent_containers/food/snacks/grown/)) + src.visible_message("The spirits of the harvest aid in the exorcism.", "The harvest spirits are harming you.") + src.Weaken(2) + qdel(weapon) + return 2 + return 1 \ No newline at end of file diff --git a/code/game/gamemodes/demon/demon_game_mode.dm b/code/game/gamemodes/demon/demon_game_mode.dm new file mode 100644 index 00000000000..06856715515 --- /dev/null +++ b/code/game/gamemodes/demon/demon_game_mode.dm @@ -0,0 +1,108 @@ +/datum/game_mode + var/list/datum/mind/sintouched = list() + var/list/datum/mind/devils = list() + var/devil_ascended = 0 // Number of arch devils on station + +/datum/game_mode/proc/auto_declare_completion_sintouched() + var/text = "" + if(sintouched.len) + text += "
The sintouched were:" + var/list/sintouchedUnique = uniqueList(sintouched) + for(var/S in sintouchedUnique) + var/datum/mind/sintouched_mind = S + text += printplayer(sintouched_mind) + text += printobjectives(sintouched_mind) + text += "
" + text += "
" + world << text + +/datum/game_mode/proc/auto_declare_completion_devils() + /var/text = "" + if(devils.len) + text += "
The devils were:" + for(var/D in devils) + var/datum/mind/devil = D + text += printplayer(devil) + text += printdevilinfo(devil) + text += printobjectives(devil) + text += "
" + world << text + +/datum/game_mode/devil + + +/datum/game_mode/proc/finalize_devil(datum/mind/devil_mind) + var/mob/living/carbon/human/S = devil_mind.current + var/trueName= randomDevilName() + var/datum/objective/devil/soulquantity/soulquant = new + soulquant.owner = devil_mind + var/datum/objective/devil/soulquality/soulqual = new + soulqual.owner = devil_mind + devil_mind.objectives += soulqual + devil_mind.objectives += soulquant + devil_mind.devilinfo = devilInfo(trueName, 1) + devil_mind.store_memory("Your devilic true name is [devil_mind.devilinfo.truename]
[lawlorify[LAW][devil_mind.devilinfo.ban]]
[lawlorify[LAW][devil_mind.devilinfo.bane]]
[lawlorify[LAW][devil_mind.devilinfo.obligation]]
[lawlorify[LAW][devil_mind.devilinfo.banish]]
") + devil_mind.devilinfo.owner = devil_mind + devil_mind.devilinfo.give_base_spells(1) + spawn(10) + if(devil_mind.assigned_role == "Clown") + S << "Your infernal nature has allowed you to overcome your clownishness." + S.dna.remove_mutation(CLOWNMUT) + +/datum/mind/proc/announceDevilLaws() + if(!devilinfo) + return + current << "You remember your link to the infernal. You are [src.devilinfo.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." + current << "However, your infernal form is not without weaknesses." + current << lawlorify[LAW][src.devilinfo.bane] + current << lawlorify[LAW][src.devilinfo.ban] + current << lawlorify[LAW][src.devilinfo.obligation] + current << lawlorify[LAW][src.devilinfo.banish] + current << "

Remember, the crew can research your weaknesses if they find out your devil name.
" + var/obj_count = 1 + current << "Your current objectives:" + for(var/O in objectives) + var/datum/objective/objective = O + current << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ + +/datum/game_mode/proc/printdevilinfo(datum/mind/ply) + if(!ply.devilinfo) + return "" + var/text = "
The devil's true name is: [ply.devilinfo.truename]
" + text += "The devil's bans were:
" + text += " [lawlorify[LORE][ply.devilinfo.ban]]
" + text += " [lawlorify[LORE][ply.devilinfo.bane]]
" + text += " [lawlorify[LORE][ply.devilinfo.obligation]]
" + text += " [lawlorify[LORE][ply.devilinfo.banish]]
" + return text + +/datum/game_mode/proc/update_devil_icons_added(datum/mind/devil_mind) + var/datum/atom_hud/antag/hud = huds[ANTAG_HUD_DEVIL] + hud.join_hud(devil_mind.current) + set_antag_hud(devil_mind.current, "devil") + +/datum/game_mode/proc/update_devil_icons_removed(datum/mind/devil_mind) + var/datum/atom_hud/antag/hud = huds[ANTAG_HUD_DEVIL] + hud.leave_hud(devil_mind.current) + set_antag_hud(devil_mind.current, null) + +/datum/game_mode/proc/update_sintouch_icons_added(datum/mind/sin_mind) + var/datum/atom_hud/antag/hud = huds[ANTAG_HUD_SINTOUCHED] + hud.join_hud(sin_mind.current) + set_antag_hud(sin_mind.current, "sintouched") + +/datum/game_mode/proc/update_sintouch_icons_removed(datum/mind/sin_mind) + var/datum/atom_hud/antag/hud = huds[ANTAG_HUD_SINTOUCHED] + hud.leave_hud(sin_mind.current) + set_antag_hud(sin_mind.current, null) + +/datum/game_mode/proc/update_soulless_icons_added(datum/mind/soulless_mind) + var/datum/atom_hud/antag/hud = huds[ANTAG_HUD_SOULLESS] + hud.join_hud(soulless_mind.current) + set_antag_hud(soulless_mind.current, "soulless") + +/datum/game_mode/proc/update_soulless_icons_removed(datum/mind/soulless_mind) + var/datum/atom_hud/antag/hud = huds[ANTAG_HUD_SOULLESS] + hud.leave_hud(soulless_mind.current) + set_antag_hud(soulless_mind.current, null) diff --git a/code/game/gamemodes/demon/demoninfo.dm b/code/game/gamemodes/demon/demoninfo.dm new file mode 100644 index 00000000000..5c013496cac --- /dev/null +++ b/code/game/gamemodes/demon/demoninfo.dm @@ -0,0 +1,413 @@ +#define POWERUPTHRESHOLD 3 //How many souls are needed per stage. + +#define BASIC_DEVIL 0 +#define BLOOD_LIZARD 1 +#define TRUE_DEVIL 2 +#define ARCH_DEVIL 3 + +#define SOULVALUE soulsOwned.len-reviveNumber + +#define DEVILRESURRECTTIME 600 + +var/global/list/allDevils = list() +var/global/list/lawlorify = list ( + LORE = list( + OBLIGATION_FOOD = "This devil seems to always offer it's victims food before slaughtering them.", + OBLIGATION_DRINK = "This devil seems to always offer it's victims a drink before slaughtering them.", + 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_STRIKEUNCONCIOUS = "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 sprinkle holy water upon it's body.", + BANISH_COFFIN = "This devil will return to life if it's remains are not placed within a coffin.", + BANISH_FORMALDYHIDE = "To banish the devil, you must inject it's lifeless body with embalming fluid.", + BANISH_RUNES = "This devil will resurrect after death, unless it's remains are within a rune.", + BANISH_CANDLES = "A large number of candles will prevent it from resurrecting.", + BANISH_DESTRUCTION = "It's corpse must be utterly destroyed to prevent resurrection.", + BANISH_FUNERAL_GARB = "Funeral garments will prevent the devil from resurrecting." + ), + LAW = list( + OBLIGATION_FOOD = "When not acting in self defense, you must always offer your victim food before harming them.", + OBLIGATION_DRINK = "When not acting in self defense, you must always offer your victim drink before harming them.", + 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_STRIKEUNCONCIOUS = "You must never strike an unconcious 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 it's 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." + ) + ) + +/datum/devilinfo/ + var/datum/mind/owner = null + var/obligation + var/ban + var/bane + var/banish + var/truename + var/list/datum/mind/soulsOwned = new + var/reviveNumber = 0 + var/form = BASIC_DEVIL + var/exists = 0 + +/proc/randomDevilInfo(name = randomDevilName()) + var/datum/devilinfo/devil = new + devil.truename = name + devil.bane = randomdevilbane() + devil.obligation = randomdevilobligation() + devil.ban = randomdevilban() + devil.banish = randomdevilbanish() + return devil + +/proc/devilInfo(name, saveDetails = 0) + if(allDevils[lowertext(name)]) + return allDevils[lowertext(name)] + else + var/datum/devilinfo/devil = randomDevilInfo(name) + allDevils[lowertext(name)] = devil + devil.exists = saveDetails + return devil + + + +/proc/randomDevilName() + var/preTitle = "" + var/title = "" + var/mainName = "" + var/suffix = "" + if(prob(65)) + if(prob(35)) + preTitle = pick("Dark ", "Hellish ", "Fiery ", "Sinful ", "Blood ") + title = pick("Lord ", "Fallen Prelate ", "Count ", "Viscount ", "Vizier ", "Elder ", "Adept ") + var/probability = 100 + mainName = pick("Hal", "Ve", "Odr", "Neit", "Ci", "Quon", "Mya", "Folth", "Wren", "Gyer", "Geyr", "Hil", "Niet", "Twou", "Hu", "Don") + while(prob(probability)) + mainName += pick("hal", "ve", "odr", "neit", "ca", "quon", "mya", "folth", "wren", "gyer", "geyr", "hil", "niet", "twoe", "phi", "coa") + probability -= 20 + if(prob(40)) + suffix = pick(" the Red", " the Soulless", " the Master", ", the Lord of all things", ", Jr.") + return preTitle + title + mainName + suffix + +/proc/randomdevilobligation() + return pick(OBLIGATION_FOOD, OBLIGATION_DRINK, OBLIGATION_GREET, OBLIGATION_PRESENCEKNOWN, OBLIGATION_SAYNAME, OBLIGATION_ANNOUNCEKILL, OBLIGATION_ANSWERTONAME) + +/proc/randomdevilban() + return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONCIOUS, 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/devilinfo/proc/add_soul(datum/mind/soul) + if(soulsOwned.Find(soul)) + return + soulsOwned += soul + switch(SOULVALUE) + if(0) + owner.current << "Your hellish powers have been restored." + give_base_spells() + if(POWERUPTHRESHOLD) + increase_blood_lizard() + if(POWERUPTHRESHOLD*2) + increase_true_devil() + if(POWERUPTHRESHOLD*3) + increase_arch_devil() + +/datum/devilinfo/proc/remove_soul(datum/mind/soul) + if(soulsOwned.Remove(soul)) + check_regression() + +/datum/devilinfo/proc/check_regression() + if (form == ARCH_DEVIL) + return //arch devil can't regress + switch(SOULVALUE) + if(-1) + remove_spells() + owner.current << "As punishment for your failures, all of your powers except contract creation have been revoked." + if(POWERUPTHRESHOLD-1) + regress_humanoid() + if(POWERUPTHRESHOLD*2-1) + regress_blood_lizard() + +/datum/devilinfo/proc/increase_form() + switch(form) + if(BASIC_DEVIL) + increase_blood_lizard() + if(BLOOD_LIZARD) + increase_true_devil() + if(TRUE_DEVIL) + increase_arch_devil() + +/datum/devilinfo/proc/regress_humanoid() + owner.current << "Your powers weaken, have more contracts be signed to regain power." + if(istype(owner.current, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = owner.current + H.set_species(/datum/species/human, 1) + H.regenerate_icons() + give_base_spells() + form = BASIC_DEVIL + +/datum/devilinfo/proc/regress_blood_lizard() + var/mob/living/carbon/true_devil/D = owner.current + D << "Your powers weaken, have more contracts be signed to regain power." + D.oldform.loc = D.loc + owner.transfer_to(D.oldform) + give_lizard_spells() + qdel(D) + form = BLOOD_LIZARD + + +/datum/devilinfo/proc/increase_blood_lizard() + owner.current << "You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard." + sleep(50) + if(istype(owner.current, /mob/living/carbon/human)) + 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_lizard_spells() + form = BLOOD_LIZARD + + + +/datum/devilinfo/proc/increase_true_devil() + owner.current << "You feel as though your current form is about to shed. You will soon turn into a true devil." + sleep(50) + var/mob/living/carbon/true_devil/A = new /mob/living/carbon/true_devil(owner.current.loc) + A.faction |= "hell" + owner.current.loc = A + A.oldform = owner.current + owner.transfer_to(A) + A.set_name() + give_true_spells() + form = TRUE_DEVIL + + +/datum/devilinfo/proc/increase_arch_devil() + var/mob/living/carbon/true_devil/D = owner.current + D << "You feel as though your form is about to ascend." + sleep(50) + if(!D) + return + D.visible_message("[D]'s skin begins to erupt with spikes.", \ + "Your flesh begins creating a shield around yourself.") + sleep(100) + if(!D) + return + D.visible_message("The horns on [D]'s head slowly grow and elongate.", \ + "Your body continues to mutate. Your telepathic abilities grow.") + sleep(90) + if(!D) + return + D.visible_message("[D]'s body begins to violently stretch and contort.", \ + "You begin to rend apart the final barriers to ultimate power.") + sleep(40) + if(!D) + return + D << "Yes!" + sleep(10) + if(!D) + return + D << "YES!!" + sleep(10) + if(!D) + return + D << "YE--" + sleep(1) + if(!D) + return + world << "\"SLOTH, WRATH, GLUTTONY, ACEDIA, ENVY, GREED, PRIDE! FIRES OF HELL AWAKEN!!\"" + world << 'sound/hallucinations/veryfar_noise.ogg' + give_arch_spells() + D.convert_to_archdevil() + 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, attack_not_jump = 1) + sleep(50) + if(!ticker.mode.devil_ascended) + SSshuttle.emergency.request(null, 0.3) + ticker.mode.devil_ascended++ + form = ARCH_DEVIL + +/datum/devilinfo/proc/remove_spells() + for(var/X in owner.spell_list) + var/obj/effect/proc_holder/spell/S = X + if(!istype(S, /obj/effect/proc_holder/spell/targeted/summon_contract)) + owner.RemoveSpell(S) + +/datum/devilinfo/proc/give_summon_contract() + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_contract(null)) + + +/datum/devilinfo/proc/give_base_spells(give_summon_contract = 0) + remove_spells() + owner.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball/hellish(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork(null)) + if(give_summon_contract) + give_summon_contract() + +/datum/devilinfo/proc/give_lizard_spells() + remove_spells() + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball/hellish(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) + +/datum/devilinfo/proc/give_true_spells() + remove_spells() + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork/greater(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball/hellish(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) + //owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null)) TODO LORDPIDEY add this spell + +/datum/devilinfo/proc/give_arch_spells() + remove_spells() + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork/ascended(null)) + //owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null)) TODO LORDPIDEY + +/datum/devilinfo/proc/beginResurrectionCheck(mob/living/body) + if(SOULVALUE>0) + owner.current<< "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)) + owner.current<< "Unfortunately, the mortals have finished a ritual that prevents your resurrection." + return -1 + else + owner.current<< "WE LIVE AGAIN!" + return hellish_resurrection(body) + else + owner.current<< "Unfortunately, the power that stemmed from your contracts has been extinguished. You no longer have enough power to resurrect." + return -1 + else + owner.current << " You seem to have resurrected without your hellish powers." + else + owner.current << "Your hellish powers are too weak to resurrect yourself." + +/datum/devilinfo/proc/check_banishment(mob/living/body) + switch(banish) + if(BANISH_WATER) + if(istype(body, /mob/living/carbon)) + var/mob/living/carbon/H = body + return H.reagents.has_reagent("holy water") + return 0 + if(BANISH_COFFIN) + return (body && istype(body.loc, /obj/structure/closet/coffin)) + if(BANISH_FORMALDYHIDE) + if(istype(body, /mob/living/carbon)) + var/mob/living/carbon/H = body + return H.reagents.has_reagent("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(istype(body, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = body + if(H.w_uniform && istype(H.w_uniform, /obj/item/clothing/under/burial)) + return 1 + return 0 + +/datum/devilinfo/proc/hellish_resurrection(mob/living/body) + message_admins("[owner.name] (true name is: [truename]) is resurrecting using hellish energy.") + if(SOULVALUE < POWERUPTHRESHOLD * 3) // once ascended, arch devils do not go down in power by any means. + reviveNumber++ + if(body) + body.revive(1,0) + 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. + else + if(blobstart.len > 0) + var/turf/targetturf = get_turf(pick(blobstart)) + var/mob/currentMob = owner.current + if(!currentMob) + currentMob = owner.get_ghost() + if(!currentMob) + message_admins("[owner.name]'s devil resurrection failed due to client logoff. Aborting.") + return -1 // + if(currentMob.mind != owner) + message_admins("[owner.name]'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 + give_summon_contract() + if(SOULVALUE >= POWERUPTHRESHOLD) + 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 >= POWERUPTHRESHOLD * 2) //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 + A.set_name() + owner.transfer_to(A) + if(SOULVALUE >= POWERUPTHRESHOLD * 3) + A.convert_to_archdevil() + + else + throw EXCEPTION("Unable to find a blobstart landmark for hellish resurrection") + check_regression() \ No newline at end of file diff --git a/code/game/gamemodes/demon/imp/imp.dm b/code/game/gamemodes/demon/imp/imp.dm new file mode 100644 index 00000000000..76696ced406 --- /dev/null +++ b/code/game/gamemodes/demon/imp/imp.dm @@ -0,0 +1,56 @@ +//////////////////The Monster + +/mob/living/simple_animal/imp + name = "imp" + real_name = "imp" + 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" + speed = 1 + a_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 = 1 + melee_damage_lower = 10 + melee_damage_upper = 15 + see_in_dark = 8 + var/boost = 0 + bloodcrawl = BLOODCRAWL_EAT + see_invisible = SEE_INVISIBLE_MINIMUM + var/list/consumed_mobs = list() + var/playstyle_string = "You are an imp, a mischevious 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/New() + ..() + boost = world.time + 30 + +/mob/living/simple_animal/imp/Life() + ..() + if(boost[src] screams in agony as it sublimates into a sulfurous smoke.") + ghostize() + qdel(src) diff --git a/code/game/gamemodes/demon/objectives.dm b/code/game/gamemodes/demon/objectives.dm new file mode 100644 index 00000000000..bdcac75b8e2 --- /dev/null +++ b/code/game/gamemodes/demon/objectives.dm @@ -0,0 +1,62 @@ +/datum/objective/devil + dangerrating = 5 + +/datum/objective/devil/soulquantity + explanation_text = "You shouldn't see this text. Error:DEVIL1" + var/quantity = 4 + +/datum/objective/devil/soulquantity/New() + quantity = pick(4,5) + explanation_text = "Purchase, and retain control over at least [quantity] souls." + +/datum/objective/devil/soulquantity/check_completion() + var/count = 0 + for(var/S in owner.devilinfo.soulsOwned) + var/datum/mind/L = S + if(L.soulOwner != L) + count++ + return count >= quantity + +/datum/objective/devil/soulquality + explanation_text = "You shouldn't see this text. Error:DEVIL2" + var/contractType + var/quantity + +/datum/objective/devil/soulquality/New() + contractType = pick(CONTRACT_POWER, CONTRACT_WEALTH, CONTRACT_PRESTIGE, CONTRACT_MAGIC, CONTRACT_REVIVE, CONTRACT_KNOWLEDGE/*, CONTRACT_UNWILLING*/) + var/contractName + quantity = 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" + //if(CONTRACT_UNWILLING) //Makes round unfun. + // contractName = "against their will" + explanation_text = "Have mortals sign at least [quantity] contracts [contractName]" + +/datum/objective/devil/soulquality/check_completion() + var/count = 0 + for(var/S in owner.devilinfo.soulsOwned) + var/datum/mind/L = S + if(L.soulOwner != L && L.damnation_type == contractType) + count++ + return count>=quantity + +/datum/objective/devil/sintouch + var/quantity + +/datum/objective/devil/sintouch/New() + quantity = pick(4,5) + explanation_text = "Ensure at least [quantity] mortals are sintouched." + +/datum/objective/devil/sintouch/check_completion() + return quantity>=ticker.mode.sintouched.len \ No newline at end of file diff --git a/code/game/gamemodes/demon/true_demon/_true_demon.dm b/code/game/gamemodes/demon/true_demon/_true_demon.dm new file mode 100644 index 00000000000..36d491df5f9 --- /dev/null +++ b/code/game/gamemodes/demon/true_demon/_true_demon.dm @@ -0,0 +1,195 @@ +#define DEVIL_HANDS_LAYER 1 +#define DEVIL_HEAD_LAYER 2 +#define DEVIL_TOTAL_LAYERS 2 + + +/mob/living/carbon/true_devil + name = "True Devil" + desc = "A pile of infernal energy, taking a vaguely humanoid form." + icon = 'icons/mob/32x64.dmi' + icon_state = "true_devil" + gender = NEUTER + health = 350 + maxHealth = 350 + ventcrawler = 0 + density = 0 + pass_flags = 0 + var/ascended = 0 + sight = (SEE_TURFS | SEE_OBJS) + status_flags = CANPUSH + languages = ALL //The devil speaks all languages meme + mob_size = MOB_SIZE_LARGE + var/mob/living/oldform + var/list/devil_overlays[DEVIL_TOTAL_LAYERS] + +/mob/living/carbon/true_devil/New() + internal_organs += new /obj/item/organ/brain/ + internal_organs += new /obj/item/organ/tongue + for(var/X in internal_organs) + var/obj/item/organ/I = X + I.Insert(src) + ..() + + +/mob/living/carbon/true_devil/proc/convert_to_archdevil() + maxHealth = 5000 // not an IMPOSSIBLE amount, but still near impossible. + ascended = 1 + health = maxHealth + icon_state = "arch_devil" + +/mob/living/carbon/true_devil/proc/set_name() + name = mind.devilinfo.truename + real_name = name + +/mob/living/carbon/true_devil/Login() + ..() + mind.announceDevilLaws() + + +/mob/living/carbon/true_devil/death(gibbed) + stat = DEAD + ..(gibbed) + drop_l_hand() + drop_r_hand() + spawn (0) + mind.devilinfo.beginResurrectionCheck(src) + + +/mob/living/carbon/true_devil/examine(mob/user) + var/msg = "*---------*\nThis is \icon[src] [src]!\n" + + //Left hand items + if(l_hand && !(l_hand.flags&ABSTRACT)) + if(l_hand.blood_DNA) + msg += "It is holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] blood-stained [l_hand.name] in its left hand!\n" + else + msg += "It is holding \icon[l_hand] \a [l_hand] in its left hand.\n" + + //Right hand items + if(r_hand && !(r_hand.flags&ABSTRACT)) + if(r_hand.blood_DNA) + msg += "It is holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] blood-stained [r_hand.name] in its right hand!\n" + else + msg += "It is holding \icon[r_hand] \a [r_hand] in its right hand.\n" + + //Braindead + if(!client && stat != DEAD) + msg += "The devil seems to be in deep contemplation.\n" + + //Damaged + if(stat == DEAD) + msg += "The hellfire seems to have been extinguished, for now at least.\n" + else if(health < (maxHealth/10)) + msg += "You can see hellfire inside of it's gaping wounds.\n" + else if(health < (maxHealth/2)) + msg += "You can see hellfire inside of it's wounds.\n" + msg += "*---------*" + user << msg + + +/mob/living/carbon/true_devil/IsAdvancedToolUser() + return 1 + + +/mob/living/carbon/true_devil/canUseTopic() + if(stat) + return + return 1 + + +/mob/living/carbon/true_devil/assess_threat() + return 666 + +/mob/living/carbon/true_devil/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0) + if(mind && mind.devilinfo.bane == BANE_LIGHT) + if(has_bane(BANE_LIGHT)) + mind.disrupt_spells(-500) + return ..() //flashes don't stop devils UNLESS it's their bane. + + +/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 && I.attack_verb.len) + 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("[attack_message]", + "[attack_message]") + +/mob/living/carbon/true_devil/UnarmedAttack(atom/A, proximity) + A.attack_hand(src) + +/mob/living/carbon/true_devil/Process_Spacemove(movement_dir = 0) + return 1 + +/mob/living/carbon/true_devil/ex_act(severity) + if(ascended) + return 0 + return ..() + +/mob/living/carbon/true_devil/singularity_act() + if(ascended) + return 0 + return ..() + +/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 + S.mind.assigned_role = "Imp" + S.mind.special_role = "Imp" + var/datum/objective/newobjective = new + newobjective.explanation_text = "Try to get a promotion to a higher devilic rank." + S.mind.objectives += newobjective + S << S.playstyle_string + S << "Objective #[1]: [newobjective.explanation_text]" + return + 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 ("harm") + var/damage = rand(1, 5) + playsound(loc, "punch", 25, 1, -1) + visible_message("[M] has punched [src]!", \ + "[M] has punched [src]!") + adjustBruteLoss(damage) + add_logs(M, src, "attacked") + updatehealth() + if ("disarm") + if (!lying && !ascended) //No stealing the arch devil's pitchfork. + if (prob(5)) + Paralyse(2) + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + add_logs(M, src, "pushed") + visible_message("[M] has pushed down [src]!", \ + "[M] has pushed down [src]!") + else + if (prob(25)) + drop_item() + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + visible_message("[M] has disarmed [src]!", \ + "[M] has disarmed [src]!") + else + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message("[M] has attempted to disarm [src]!") + +/mob/living/carbon/true_devil/handle_breathing() + // devils do not need to breathe diff --git a/code/game/gamemodes/demon/true_demon/inventory.dm b/code/game/gamemodes/demon/true_demon/inventory.dm new file mode 100644 index 00000000000..23035370135 --- /dev/null +++ b/code/game/gamemodes/demon/true_demon/inventory.dm @@ -0,0 +1,61 @@ +/mob/living/carbon/true_devil/unEquip(obj/item/I, force) + if(..(I,force)) + update_inv_hands() + return 1 + return 0 + +/mob/living/carbon/true_devil/proc/update_inv_hands() + //TODO LORDPIDEY: Figure out how to make the hands line up properly. the l/r_hand_image 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() + + if(r_hand) + + var/r_state = r_hand.item_state + if(!r_state) + r_state = r_hand.icon_state + + var/image/r_hand_image = r_hand.build_worn_icon(state = r_state, default_layer = DEVIL_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE) + + hands_overlays += r_hand_image + + if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) + r_hand.layer = 20 + r_hand.screen_loc = ui_rhand + client.screen |= r_hand + + if(l_hand) + + var/l_state = l_hand.item_state + if(!l_state) + l_state = l_hand.icon_state + + var/image/l_hand_image = l_hand.build_worn_icon(state = l_state, default_layer = DEVIL_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE) + + hands_overlays += l_hand_image + + if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) + l_hand.layer = 20 + l_hand.screen_loc = ui_lhand + 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/update_inv_l_hand() + update_inv_hands() + + +/mob/living/carbon/true_devil/update_inv_r_hand() + update_inv_hands() + +/mob/living/carbon/true_devil/remove_overlay(cache_index) + if(devil_overlays[cache_index]) + overlays -= devil_overlays[cache_index] + devil_overlays[cache_index] = null + + +/mob/living/carbon/true_devil/apply_overlay(cache_index) + var/image/I = devil_overlays[cache_index] + if(I) + overlays += I \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/sintouched/objectives.dm b/code/game/gamemodes/miniantags/sintouched/objectives.dm new file mode 100644 index 00000000000..86572782ca8 --- /dev/null +++ b/code/game/gamemodes/miniantags/sintouched/objectives.dm @@ -0,0 +1,35 @@ +/datum/objective/sintouched + dangerrating = 5 + completed = 1 + +/* NO ERP OBJECTIVE FOR YOU. +/datum/objective/sintouched/lust + dangerrating = 3 // it's not AS dangerous. + +/datum/objective/sintouched/lust/New() + var/mob/dead/D = pick(dead_mob_list) + if(prob(50) && D) + explanation_text = "You know that [D] has perished.... and you think [D] is kinda cute. Make sure everyone knows how HOT [D]'s lifeless body is." + else + explanation_text = "Go get married, then immediately cheat on your new spouse." */ + +/datum/objective/sintouched/gluttony + explanation_text = "Everything is so delicious. Go eat everything." + +/datum/objective/sintouched/greed + explanation_text = "You want MORE, more money, more wealth, more riches. Go get it, but don't hurt people for it." + +/datum/objective/sintouched/sloth + explanation_text = "You just get tired randomly. Go take a nap at a time that would inconvenience other people." + +/datum/objective/sintouched/wrath + explanation_text = "What have your coworkers ever done for you? Don't offer to help them in any matter, and refuse if asked." + +/datum/objective/sintouched/envy + explanation_text = "Why should you be stuck with your rank? Show everyone you can do other jobs too, and don't let anyone stop you, least of all because you have no training" + +/datum/objective/sintouched/pride + explanation_text = "You are the BEST thing on the station. Make sure everyone knows it." + +/datum/objective/sintouched/acedia + explanation_text = "Angels, devils, good, evil... who cares? Just ignore any hellish threats and do your job." \ No newline at end of file diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index b6a576e12f5..ddbdcfa4e09 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -203,7 +203,7 @@ return if((src.occupant) && (src.occupant.loc == src)) - if((src.occupant.stat == DEAD) || (src.occupant.suiciding) || !occupant.key) //Autoeject corpses and suiciding dudes. + if((src.occupant.stat == DEAD) || (src.occupant.suiciding) || !occupant.key || src.occupant.hellbound) //Autoeject corpses and suiciding dudes. src.locked = 0 src.go_out() src.connected_message("Clone Rejected: Deceased.") diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 1b50cab81af..253a3c1c8d7 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1,1114 +1,1115 @@ -/obj/machinery/computer/arcade/ - name = "random arcade" - desc = "random arcade machine" - icon_state = "arcade" - icon_keyboard = null - icon_screen = "invaders" - var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, - /obj/item/toy/AI = 2, - /obj/item/clothing/under/syndicate/tacticool = 2, - /obj/item/toy/sword = 2, - /obj/item/toy/gun = 2, - /obj/item/weapon/gun/projectile/shotgun/toy/crossbow = 2, - /obj/item/weapon/storage/box/fakesyndiesuit = 2, - /obj/item/weapon/storage/crayons = 2, - /obj/item/toy/spinningtoy = 2, - /obj/item/toy/prize/ripley = 1, - /obj/item/toy/prize/fireripley = 1, - /obj/item/toy/prize/deathripley = 1, - /obj/item/toy/prize/gygax = 1, - /obj/item/toy/prize/durand = 1, - /obj/item/toy/prize/honk = 1, - /obj/item/toy/prize/marauder = 1, - /obj/item/toy/prize/seraph = 1, - /obj/item/toy/prize/mauler = 1, - /obj/item/toy/prize/odysseus = 1, - /obj/item/toy/prize/phazon = 1, - /obj/item/toy/prize/reticence = 1, - /obj/item/toy/cards/deck = 2, - /obj/item/toy/nuke = 2, - /obj/item/toy/minimeteor = 2, - /obj/item/toy/carpplushie = 2, - /obj/item/toy/foamblade = 2, - /obj/item/toy/redbutton = 2, - /obj/item/toy/talking/owl = 2, - /obj/item/toy/talking/griffin = 2, - /obj/item/weapon/coin/antagtoken = 2, - /obj/item/stack/tile/fakespace/loaded = 2, - /obj/item/toy/toy_xeno = 2, - /obj/item/weapon/restraints/handcuffs/fake = 2 - ) - -/obj/machinery/computer/arcade/New() - ..() - // If it's a generic arcade machine, pick a random arcade - // circuit board for it and make the new machine - if(!circuit) - var/choice = pick(subtypesof(/obj/item/weapon/circuitboard/computer/arcade)) - var/obj/item/weapon/circuitboard/CB = new choice() - new CB.build_path(loc, CB) - qdel(src) - -/obj/machinery/computer/arcade/proc/prizevend() - if(prob(0.0001)) //1 in a million - new /obj/item/weapon/gun/energy/pulse(src) - - if(!contents.len) - var/prizeselect = pickweight(prizes) - new prizeselect(src.loc) - - if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun - new /obj/item/toy/ammo/gun(src.loc) - - else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit - new /obj/item/clothing/head/syndicatefake(src.loc) - - else - var/atom/movable/prize = pick(contents) - prize.loc = src.loc - -/obj/machinery/computer/arcade/emp_act(severity) - ..(severity) - - if(stat & (NOPOWER|BROKEN)) - return - - var/empprize = null - var/num_of_prizes = 0 - switch(severity) - if(1) - num_of_prizes = rand(1,4) - if(2) - num_of_prizes = rand(0,2) - for(var/i = num_of_prizes; i > 0; i--) - empprize = pickweight(prizes) - new empprize(src.loc) - explosion(src.loc, -1, 0, 1+num_of_prizes, flame_range = 1+num_of_prizes) - - -// ** BATTLE ** // - - -/obj/machinery/computer/arcade/battle - name = "arcade machine" - desc = "Does not support Pinball." - icon_state = "arcade" - circuit = /obj/item/weapon/circuitboard/computer/arcade/battle - var/enemy_name = "Space Villian" - var/temp = "Winners don't use space drugs" //Temporary message, for attack messages, etc - var/player_hp = 30 //Player health/attack points - var/player_mp = 10 - var/enemy_hp = 45 //Enemy health/attack points - var/enemy_mp = 20 - var/gameover = 0 - var/blocked = 0 //Player cannot attack/heal while set - var/turtle = 0 - -/obj/machinery/computer/arcade/battle/New() - ..() - var/name_action - var/name_part1 - var/name_part2 - - name_action = pick("Defeat ", "Annihilate ", "Save ", "Strike ", "Stop ", "Destroy ", "Robust ", "Romance ", "Pwn ", "Own ", "Ban ") - - name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ") - name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn", "Bloopers") - - src.enemy_name = replacetext((name_part1 + name_part2), "the ", "") - src.name = (name_action + name_part1 + name_part2) - -/obj/machinery/computer/arcade/battle/attack_hand(mob/user) - if(..()) - return - user.set_machine(src) - var/dat = "Close" - dat += "

[src.enemy_name]

" - - dat += "

[src.temp]

" - dat += "
Health: [src.player_hp] | Magic: [src.player_mp] | Enemy Health: [src.enemy_hp]
" - - if (src.gameover) - dat += "
New Game" - else - dat += "
Attack | " - dat += "Heal | " - dat += "Recharge Power" - - dat += "
" - - //user << browse(dat, "window=arcade") - //onclose(user, "arcade") - var/datum/browser/popup = new(user, "arcade", "Space Villian 2000") - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/arcade/battle/Topic(href, href_list) - if(..()) - return - - if (!src.blocked && !src.gameover) - if (href_list["attack"]) - src.blocked = 1 - var/attackamt = rand(2,6) - src.temp = "You attack for [attackamt] damage!" - playsound(src.loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10) - src.updateUsrDialog() - if(turtle > 0) - turtle-- - - sleep(10) - src.enemy_hp -= attackamt - src.arcade_action() - - else if (href_list["heal"]) - src.blocked = 1 - var/pointamt = rand(1,3) - var/healamt = rand(6,8) - src.temp = "You use [pointamt] magic to heal for [healamt] damage!" - playsound(src.loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10) - src.updateUsrDialog() - turtle++ - - sleep(10) - src.player_mp -= pointamt - src.player_hp += healamt - src.blocked = 1 - src.updateUsrDialog() - src.arcade_action() - - else if (href_list["charge"]) - src.blocked = 1 - var/chargeamt = rand(4,7) - src.temp = "You regain [chargeamt] points" - playsound(src.loc, 'sound/arcade/Mana.ogg', 50, 1, extrarange = -3, falloff = 10) - src.player_mp += chargeamt - if(turtle > 0) - turtle-- - - src.updateUsrDialog() - sleep(10) - src.arcade_action() - - if (href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=arcade") - - else if (href_list["newgame"]) //Reset everything - temp = "New Round" - player_hp = 30 - player_mp = 10 - enemy_hp = 45 - enemy_mp = 20 - gameover = 0 - turtle = 0 - - if(emagged) - src.New() - emagged = 0 - - src.add_fingerprint(usr) - src.updateUsrDialog() - return - -/obj/machinery/computer/arcade/battle/proc/arcade_action() - if ((src.enemy_mp <= 0) || (src.enemy_hp <= 0)) - if(!gameover) - src.gameover = 1 - src.temp = "[src.enemy_name] has fallen! Rejoice!" - playsound(src.loc, 'sound/arcade/Win.ogg', 50, 1, extrarange = -3, falloff = 10) - - if(emagged) - feedback_inc("arcade_win_emagged") - new /obj/effect/spawner/newbomb/timer/syndicate(src.loc) - new /obj/item/clothing/head/collectable/petehat(src.loc) - message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") - log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") - src.New() - emagged = 0 - else - feedback_inc("arcade_win_normal") - prizevend() - - else if (emagged && (turtle >= 4)) - var/boomamt = rand(5,10) - src.temp = "[src.enemy_name] throws a bomb, exploding you for [boomamt] damage!" - playsound(src.loc, 'sound/arcade/Boom.ogg', 50, 1, extrarange = -3, falloff = 10) - src.player_hp -= boomamt - - else if ((src.enemy_mp <= 5) && (prob(70))) - var/stealamt = rand(2,3) - src.temp = "[src.enemy_name] steals [stealamt] of your power!" - playsound(src.loc, 'sound/arcade/Steal.ogg', 50, 1, extrarange = -3, falloff = 10) - src.player_mp -= stealamt - src.updateUsrDialog() - - if (src.player_mp <= 0) - src.gameover = 1 - sleep(10) - src.temp = "You have been drained! GAME OVER" - playsound(src.loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10) - if(emagged) - feedback_inc("arcade_loss_mana_emagged") - usr.gib() - else - feedback_inc("arcade_loss_mana_normal") - - else if ((src.enemy_hp <= 10) && (src.enemy_mp > 4)) - src.temp = "[src.enemy_name] heals for 4 health!" - playsound(src.loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10) - src.enemy_hp += 4 - src.enemy_mp -= 4 - - else - var/attackamt = rand(3,6) - src.temp = "[src.enemy_name] attacks for [attackamt] damage!" - playsound(src.loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10) - src.player_hp -= attackamt - - if ((src.player_mp <= 0) || (src.player_hp <= 0)) - src.gameover = 1 - src.temp = "You have been crushed! GAME OVER" - playsound(src.loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10) - if(emagged) - feedback_inc("arcade_loss_hp_emagged") - usr.gib() - else - feedback_inc("arcade_loss_hp_normal") - - src.blocked = 0 - return - - -/obj/machinery/computer/arcade/battle/emag_act(mob/user) - if(!emagged) - temp = "If you die in the game, you die for real!" - player_hp = 30 - player_mp = 10 - enemy_hp = 45 - enemy_mp = 20 - gameover = 0 - blocked = 0 - - emagged = 1 - - enemy_name = "Cuban Pete" - name = "Outbomb Cuban Pete" - - - src.updateUsrDialog() - - - -// *** THE ORION TRAIL ** // - -#define ORION_TRAIL_WINTURN 9 - -//Orion Trail Events -#define ORION_TRAIL_RAIDERS "Raiders" -#define ORION_TRAIL_FLUX "Interstellar Flux" -#define ORION_TRAIL_ILLNESS "Illness" -#define ORION_TRAIL_BREAKDOWN "Breakdown" -#define ORION_TRAIL_LING "Changelings?" -#define ORION_TRAIL_LING_ATTACK "Changeling Ambush" -#define ORION_TRAIL_MALFUNCTION "Malfunction" -#define ORION_TRAIL_COLLISION "Collision" -#define ORION_TRAIL_SPACEPORT "Spaceport" -#define ORION_TRAIL_BLACKHOLE "BlackHole" - -#define ORION_STATUS_START 1 -#define ORION_STATUS_NORMAL 2 -#define ORION_STATUS_GAMEOVER 3 -#define ORION_STATUS_MARKET 4 - -/obj/machinery/computer/arcade/orion_trail - name = "The Orion Trail" - desc = "Learn how our ancestors got to Orion, and have fun in the process!" - icon_state = "arcade" - circuit = /obj/item/weapon/circuitboard/computer/arcade/orion_trail - var/busy = 0 //prevent clickspam that allowed people to ~speedrun~ the game. - var/engine = 0 - var/hull = 0 - var/electronics = 0 - var/food = 80 - var/fuel = 60 - var/turns = 4 - var/alive = 4 - var/eventdat = null - var/event = null - var/list/settlers = list("Harry","Larry","Bob") - var/list/events = list(ORION_TRAIL_RAIDERS = 3, - ORION_TRAIL_FLUX = 1, - ORION_TRAIL_ILLNESS = 3, - ORION_TRAIL_BREAKDOWN = 2, - ORION_TRAIL_LING = 3, - ORION_TRAIL_MALFUNCTION = 2, - ORION_TRAIL_COLLISION = 1, - ORION_TRAIL_SPACEPORT = 2 - ) - var/list/stops = list() - var/list/stopblurbs = list() - var/lings_aboard = 0 - var/spaceport_raided = 0 - var/spaceport_freebie = 0 - var/last_spaceport_action = "" - var/gameStatus = ORION_STATUS_START - var/canContinueEvent = 0 - -/obj/machinery/computer/arcade/orion_trail/New() - ..() - // Sets up the main trail - stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") - stopblurbs = list( - "Pluto, long since occupied with long-range sensors and scanners, stands ready to, and indeed continues to probe the far reaches of the galaxy.", - "At the edge of the Sol system lies a treacherous asteroid belt. Many have been crushed by stray asteroids and misguided judgement.", - "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now a low-population sanctuary for adventurers and traders.", - "This region of space is particularly devoid of matter. Such low-density pockets are known to exist, but the vastness of it is astounding.", - "Rigel Prime, the center of the Rigel system, burns hot, basking its planetary bodies in warmth and radiation.", - "Tau Ceti Beta has recently become a waypoint for colonists headed towards Orion. There are many ships and makeshift stations in the vicinity.", - "Sensors indicate that a black hole's gravitational field is affecting the region of space we were headed through. We could stay of course, but risk of being overcome by its gravity, or we could change course to go around, which will take longer.", - "You have come into range of the first man-made structure in this region of space. It has been constructed not by travellers from Sol, but by colonists from Orion. It stands as a monument to the colonists' success.", - "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for mankind!" - ) - -/obj/machinery/computer/arcade/orion_trail/proc/newgame() - // Set names of settlers in crew - settlers = list() - for(var/i = 1; i <= 3; i++) - add_crewmember() - add_crewmember("[usr]") - // Re-set items to defaults - engine = 1 - hull = 1 - electronics = 1 - food = 80 - fuel = 60 - alive = 4 - turns = 1 - event = null - gameStatus = ORION_STATUS_NORMAL - lings_aboard = 0 - - //spaceport junk - spaceport_raided = 0 - spaceport_freebie = 0 - last_spaceport_action = "" - -/obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user) - if(..()) - return - if(fuel <= 0 || food <=0 || settlers.len == 0) - gameStatus = ORION_STATUS_GAMEOVER - event = null - user.set_machine(src) - var/dat = "" - if(gameStatus == ORION_STATUS_GAMEOVER) - dat = "

Game Over

" - dat += "Like many before you, your crew never made it to Orion, lost to space...
Forever." - if(settlers.len == 0) - dat += "
Your entire crew died, your ship joins the fleet of ghost-ships littering the galaxy." - else - if(food <= 0) - dat += "
You ran out of food and starved." - if(emagged) - user.nutrition = 0 //yeah you pretty hongry - user << "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor." - if(fuel <= 0) - dat += "
You ran out of fuel, and drift, slowly, into a star." - if(emagged) - var/mob/living/M = user - M.adjust_fire_stacks(5) - M.IgniteMob() //flew into a star, so you're on fire - user << "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames." - dat += "

OK...

" - - if(emagged) - user << "You're never going to make it to Orion..." - user.death() - emagged = 0 //removes the emagged status after you lose - gameStatus = ORION_STATUS_START - name = "The Orion Trail" - desc = "Learn how our ancestors got to Orion, and have fun in the process!" - - else if(event) - dat = eventdat - else if(gameStatus == ORION_STATUS_NORMAL) - var/title = stops[turns] - var/subtext = stopblurbs[turns] - dat = "

[title]

" - dat += "[subtext]" - dat += "

Crew:

" - dat += english_list(settlers) - dat += "
Food: [food] | Fuel: [fuel]" - dat += "
Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]" - if(turns == 7) - dat += "

Go Around Continue

" - else - dat += "

Continue

" - dat += "

Kill a crewmember

" - dat += "

Close

" - else - dat = "

The Orion Trail

" - dat += "

Experience the journey of your ancestors!



" - dat += "
New Game
" - dat += "

Close

" - var/datum/browser/popup = new(user, "arcade", "The Orion Trail",400,700) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/arcade/orion_trail/Topic(href, href_list) - if(..()) - return - if(href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=arcade") - - if(busy) - return - busy = 1 - - if (href_list["continue"]) //Continue your travels - if(gameStatus == ORION_STATUS_NORMAL && !event && turns != 7) - if(turns >= ORION_TRAIL_WINTURN) - win() - else - food -= (alive+lings_aboard)*2 - fuel -= 5 - if(turns == 2 && prob(30)) - event = ORION_TRAIL_COLLISION - event() - else if(prob(75)) - event = pickweight(events) - if(lings_aboard) - if(event == ORION_TRAIL_LING || prob(55)) - event = ORION_TRAIL_LING_ATTACK - event() - turns += 1 - if(emagged) - var/mob/living/carbon/M = usr //for some vars - switch(event) - if(ORION_TRAIL_RAIDERS) - if(prob(50)) - usr << "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?" - M.hallucination += 30 - else - usr << "Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there..." - M.take_organ_damage(30) - playsound(loc, 'sound/weapons/genhit2.ogg', 100, 1) - if(ORION_TRAIL_ILLNESS) - var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS - if(severity == 1) - M << "You suddenly feel slightly nauseous." //got off lucky - if(severity == 2) - usr << "You suddenly feel extremely nauseous and hunch over until it passes." - M.Stun(3) - if(severity >= 3) //you didn't pray hard enough - M << "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit." - M.Stun(5) - sleep(30) - M.vomit(50) - if(ORION_TRAIL_FLUX) - if(prob(75)) - M.Weaken(3) - say("A sudden gust of powerful wind slams [M] into the floor!") - M.take_organ_damage(25) - playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1) - else - M << "A violent gale blows past you, and you barely manage to stay standing!" - if(ORION_TRAIL_COLLISION) //by far the most damaging event - if(prob(90)) - playsound(src.loc, 'sound/effects/bang.ogg', 100, 1) - var/turf/open/floor/F - for(F in orange(1, src)) - F.ChangeTurf(F.baseturf) - say("Something slams into the floor around [src], exposing it to space!") - if(hull) - sleep(10) - say("A new floor suddenly appears around [src]. What the hell?") - playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1) - var/turf/open/space/T - for(T in orange(1, src)) - T.ChangeTurf(/turf/open/floor/plating/) - else - say("Something slams into the floor around [src] - luckily, it didn't get through!") - playsound(src.loc, 'sound/effects/bang.ogg', 50, 1) - if(ORION_TRAIL_MALFUNCTION) - playsound(src.loc, 'sound/effects/EMPulse.ogg', 50, 1) - src.visible_message("[src] malfunctions, randomizing in-game stats!") - var/oldfood = food - var/oldfuel = fuel - food = rand(10,80) / rand(1,2) - fuel = rand(10,60) / rand(1,2) - if(electronics) - sleep(10) - if(oldfuel > fuel && oldfood > food) - src.audible_message("[src] lets out a somehow reassuring chime.") - else if(oldfuel < fuel || oldfood < food) - src.audible_message("[src] lets out a somehow ominous chime.") - food = oldfood - fuel = oldfuel - playsound(src.loc, 'sound/machines/chime.ogg', 50, 1) - - else if(href_list["newgame"]) //Reset everything - if(gameStatus == ORION_STATUS_START) - newgame() - else if(href_list["menu"]) //back to the main menu - if(gameStatus == ORION_STATUS_GAMEOVER) - gameStatus = ORION_STATUS_START - event = null - food = 80 - fuel = 60 - settlers = list("Harry","Larry","Bob") - else if(href_list["slow"]) //slow down - if(event == ORION_TRAIL_FLUX) - food -= (alive+lings_aboard)*2 - fuel -= 5 - event = null - else if(href_list["pastblack"]) //slow down - if(turns == 7) - food -= ((alive+lings_aboard)*2)*3 - fuel -= 15 - turns += 1 - event = null - else if(href_list["useengine"]) //use parts - if(event == ORION_TRAIL_BREAKDOWN) - engine = max(0, --engine) - event = null - else if(href_list["useelec"]) //use parts - if(event == ORION_TRAIL_MALFUNCTION) - electronics = max(0, --electronics) - event = null - else if(href_list["usehull"]) //use parts - if(event == ORION_TRAIL_COLLISION) - hull = max(0, --hull) - event = null - else if(href_list["wait"]) //wait 3 days - if(event == ORION_TRAIL_BREAKDOWN || event == ORION_TRAIL_MALFUNCTION || event == ORION_TRAIL_COLLISION) - food -= ((alive+lings_aboard)*2)*3 - event = null - else if(href_list["keepspeed"]) //keep speed - if(event == ORION_TRAIL_FLUX) - if(prob(75)) - event = "Breakdown" - event() - else - event = null - else if(href_list["blackhole"]) //keep speed past a black hole - if(turns == 7) - if(prob(75)) - event = ORION_TRAIL_BLACKHOLE - event() - if(emagged) //has to be here because otherwise it doesn't work - playsound(src.loc, 'sound/effects/supermatter.ogg', 100, 1) - say("A miniature black hole suddenly appears in front of [src], devouring [usr] alive!") - usr.Stun(10) //you can't run :^) - var/S = new /obj/singularity/academy(usr.loc) - emagged = 0 //immediately removes emagged status so people can't kill themselves by sprinting up and interacting - sleep(50) - say("[S] winks out, just as suddenly as it appeared.") - qdel(S) - else - event = null - turns += 1 - else if(href_list["holedeath"]) - if(event == ORION_TRAIL_BLACKHOLE) - gameStatus = ORION_STATUS_GAMEOVER - event = null - else if(href_list["eventclose"]) //end an event - if(canContinueEvent) - event = null - - else if(href_list["killcrew"]) //shoot a crewmember - if(gameStatus == ORION_STATUS_NORMAL || event == ORION_TRAIL_LING) - var/sheriff = remove_crewmember() //I shot the sheriff - playsound(loc,'sound/weapons/Gunshot.ogg', 100, 1) - - if(settlers.len == 0 || alive == 0) - say("The last crewmember [sheriff], shot themselves, GAME OVER!") - if(emagged) - usr.death(0) - emagged = 0 - gameStatus = ORION_STATUS_GAMEOVER - event = null - else if(emagged) - if(usr.name == sheriff) - say("The crew of the ship chose to kill [usr.name]!") - usr.death(0) - - if(event == ORION_TRAIL_LING) //only ends the ORION_TRAIL_LING event, since you can do this action in multiple places - event = null - - //Spaceport specific interactions - //they get a header because most of them don't reset event (because it's a shop, you leave when you want to) - //they also call event() again, to regen the eventdata, which is kind of odd but necessary - else if(href_list["buycrew"]) //buy a crewmember - if(gameStatus == ORION_STATUS_MARKET) - if(!spaceport_raided && food >= 10 && fuel >= 10) - var/bought = add_crewmember() - last_spaceport_action = "You hired [bought] as a new crewmember." - fuel -= 10 - food -= 10 - event() - - else if(href_list["sellcrew"]) //sell a crewmember - if(gameStatus == ORION_STATUS_MARKET) - if(!spaceport_raided && settlers.len > 1) - var/sold = remove_crewmember() - last_spaceport_action = "You sold your crewmember, [sold]!" - fuel += 7 - food += 7 - event() - - else if(href_list["leave_spaceport"]) - if(gameStatus == ORION_STATUS_MARKET) - event = null - gameStatus = ORION_STATUS_NORMAL - spaceport_raided = 0 - spaceport_freebie = 0 - last_spaceport_action = "" - - else if(href_list["raid_spaceport"]) - if(gameStatus == ORION_STATUS_MARKET) - if(!spaceport_raided) - var/success = min(15 * alive,100) //default crew (4) have a 60% chance - spaceport_raided = 1 - - var/FU = 0 - var/FO = 0 - if(prob(success)) - FU = rand(5,15) - FO = rand(5,15) - last_spaceport_action = "You successfully raided the spaceport! you gained [FU] Fuel and [FO] Food! (+[FU]FU,+[FO]FO)" - else - FU = rand(-5,-15) - FO = rand(-5,-15) - last_spaceport_action = "You failed to raid the spaceport! you lost [FU*-1] Fuel and [FO*-1] Food in your scramble to escape! ([FU]FU,[FO]FO)" - - //your chance of lose a crewmember is 1/2 your chance of success - //this makes higher % failures hurt more, don't get cocky space cowboy! - if(prob(success*5)) - var/lost_crew = remove_crewmember() - last_spaceport_action = "You failed to raid the spaceport! you lost [FU*-1] Fuel and [FO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FO]FO,-Crew)" - if(emagged) - say("WEEWOO WEEWOO, Spaceport Security en route!") - for(var/i, i<=3, i++) - var/mob/living/simple_animal/hostile/syndicate/ranged/orion/O = new/mob/living/simple_animal/hostile/syndicate/ranged/orion(get_turf(src)) - O.target = usr - - - fuel += FU - food += FO - event() - - else if(href_list["buyparts"]) - if(gameStatus == ORION_STATUS_MARKET) - if(!spaceport_raided && fuel > 5) - switch(text2num(href_list["buyparts"])) - if(1) //Engine Parts - engine++ - last_spaceport_action = "Bought Engine Parts" - if(2) //Hull Plates - hull++ - last_spaceport_action = "Bought Hull Plates" - if(3) //Spare Electronics - electronics++ - last_spaceport_action = "Bought Spare Electronics" - fuel -= 5 //they all cost 5 - event() - - else if(href_list["trade"]) - if(gameStatus == ORION_STATUS_MARKET) - if(!spaceport_raided) - switch(text2num(href_list["trade"])) - if(1) //Fuel - if(fuel > 5) - fuel -= 5 - food += 5 - last_spaceport_action = "Traded Fuel for Food" - event() - if(2) //Food - if(food > 5) - fuel += 5 - food -= 5 - last_spaceport_action = "Traded Food for Fuel" - event() - - src.add_fingerprint(usr) - src.updateUsrDialog() - busy = 0 - return - - -/obj/machinery/computer/arcade/orion_trail/proc/event() - eventdat = "

[event]

" - canContinueEvent = 0 - switch(event) - if(ORION_TRAIL_RAIDERS) - eventdat += "Raiders have come aboard your ship!" - if(prob(50)) - var/sfood = rand(1,10) - var/sfuel = rand(1,10) - food -= sfood - fuel -= sfuel - eventdat += "
They have stolen [sfood] Food and [sfuel] Fuel." - else if(prob(10)) - var/deadname = remove_crewmember() - eventdat += "
[deadname] tried to fight back but was killed." - else - eventdat += "
Fortunately you fended them off without any trouble." - eventdat += "

Continue

" - eventdat += "

Close

" - canContinueEvent = 1 - - if(ORION_TRAIL_FLUX) - eventdat += "This region of space is highly turbulent.
If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." - eventdat += "
What will you do?" - eventdat += "

Slow Down Continue

" - eventdat += "

Close

" - - if(ORION_TRAIL_ILLNESS) - eventdat += "A deadly illness has been contracted!" - var/deadname = remove_crewmember() - eventdat += "
[deadname] was killed by the disease." - eventdat += "

Continue

" - eventdat += "

Close

" - canContinueEvent = 1 - - if(ORION_TRAIL_BREAKDOWN) - eventdat += "Oh no! The engine has broken down!" - eventdat += "
You can repair it with an engine part, or you can make repairs for 3 days." - if(engine >= 1) - eventdat += "

Use PartWait

" - else - eventdat += "

Wait

" - eventdat += "

Close

" - - if(ORION_TRAIL_MALFUNCTION) - eventdat += "The ship's systems are malfunctioning!" - eventdat += "
You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." - if(electronics >= 1) - eventdat += "

Use PartWait

" - else - eventdat += "

Wait

" - eventdat += "

Close

" - - if(ORION_TRAIL_COLLISION) - eventdat += "Something hit us! Looks like there's some hull damage." - if(prob(25)) - var/sfood = rand(5,15) - var/sfuel = rand(5,15) - food -= sfood - fuel -= sfuel - eventdat += "
[sfood] Food and [sfuel] Fuel was vented out into space." - if(prob(10)) - var/deadname = remove_crewmember() - eventdat += "
[deadname] was killed by rapid depressurization." - eventdat += "
You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." - if(hull >= 1) - eventdat += "

Use PartWait

" - else - eventdat += "

Wait

" - eventdat += "

Close

" - - if(ORION_TRAIL_BLACKHOLE) - eventdat += "You were swept away into the black hole." - eventdat += "

Oh...

" - eventdat += "

Close

" - settlers = list() - - if(ORION_TRAIL_LING) - eventdat += "Strange reports warn of changelings infiltrating crews on trips to Orion..." - if(settlers.len <= 2) - eventdat += "
Your crew's chance of reaching Orion is so slim the changelings likely avoided your ship..." - eventdat += "

Continue

" - eventdat += "

Close

" - if(prob(10)) // "likely", I didn't say it was guaranteed! - lings_aboard = min(++lings_aboard,2) - else - if(lings_aboard) //less likely to stack lings - if(prob(20)) - lings_aboard = min(++lings_aboard,2) - else if(prob(70)) - lings_aboard = min(++lings_aboard,2) - - eventdat += "

Kill a crewmember

" - eventdat += "

Risk it

" - eventdat += "

Close

" - canContinueEvent = 1 - - if(ORION_TRAIL_LING_ATTACK) - if(lings_aboard <= 0) //shouldn't trigger, but hey. - eventdat += "Haha, fooled you, there are no changelings on board!" - eventdat += "
(You should report this to a coder :S)" - else - var/ling1 = remove_crewmember() - var/ling2 = "" - if(lings_aboard >= 2) - ling2 = remove_crewmember() - - eventdat += "Oh no, some of your crew are Changelings!" - if(ling2) - eventdat += "
[ling1] and [ling2]'s arms twist and contort into grotesque blades!" - else - eventdat += "
[ling1]'s arm twists and contorts into a grotesque blade!" - - var/chance2attack = alive*20 - if(prob(chance2attack)) - var/chancetokill = 30*lings_aboard-(5*alive) //eg: 30*2-(10) = 50%, 2 lings, 2 crew is 50% chance - if(prob(chancetokill)) - var/deadguy = remove_crewmember() - eventdat += "
The Changeling[ling2 ? "s":""] run[ling2 ? "":"s"] up to [deadguy] and capitulates them!" - else - eventdat += "
You valiantly fight off the Changeling[ling2 ? "s":""]!" - eventdat += "
You cut the Changeling[ling2 ? "s":""] up into meat... Eww" - if(ling2) - food += 30 - lings_aboard = max(0,lings_aboard-2) - else - food += 15 - lings_aboard = max(0,--lings_aboard) - else - eventdat += "
The Changeling[ling2 ? "s":""] run[ling2 ? "":"s"] away, What wimps!" - if(ling2) - lings_aboard = max(0,lings_aboard-2) - else - lings_aboard = max(0,--lings_aboard) - - eventdat += "

Continue

" - eventdat += "

Close

" - canContinueEvent = 1 - - - if(ORION_TRAIL_SPACEPORT) - gameStatus = ORION_STATUS_MARKET - if(spaceport_raided) - eventdat += "The Spaceport is on high alert! they wont let you dock since you tried to attack them!" - if(last_spaceport_action) - eventdat += "
Last Spaceport Action: [last_spaceport_action]" - eventdat += "

Depart Spaceport

" - eventdat += "

Close

" - else - eventdat += "You pull the ship up to dock at a nearby Spaceport, lucky find!" - eventdat += "
This Spaceport is home to travellers who failed to reach Orion, but managed to find a different home..." - eventdat += "
Trading terms: FU = Fuel, FO = Food" - if(last_spaceport_action) - eventdat += "
Last Spaceport Action: [last_spaceport_action]" - eventdat += "

Crew:

" - eventdat += english_list(settlers) - eventdat += "
Food: [food] | Fuel: [fuel]" - eventdat += "
Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]" - - - //If your crew is pathetic you can get freebies (provided you haven't already gotten one from this port) - if(!spaceport_freebie && (fuel < 20 || food < 20)) - spaceport_freebie++ - var/FU = 10 - var/FO = 10 - var/freecrew = 0 - if(prob(30)) - FU = 25 - FO = 25 - - if(prob(10)) - add_crewmember() - freecrew++ - - eventdat += "
The traders of the spaceport take pitty on you, and give you some food and fuel (+[FU]FU,+[FO]FO)" - if(freecrew) - eventdat += "
You also gain a new crewmember!" - - fuel += FU - food += FO - - //CREW INTERACTIONS - eventdat += "

Crew Management:

" - - //Buy crew - if(food >= 10 && fuel >= 10) - eventdat += "

Hire a new Crewmember (-10FU,-10FO)

" - else - eventdat += "

Cant afford a new Crewmember

" - - //Sell crew - if(settlers.len > 1) - eventdat += "

Sell crew for Fuel and Food (+7FU,+7FO)

" - else - eventdat += "

Cant afford to sell a Crewmember

" - - //BUY/SELL STUFF - eventdat += "

Spare Parts:

" - - //Engine parts - if(fuel > 5) - eventdat += "

Buy Engine Parts (-5FU)

" - else - eventdat += "

Cant afford to buy Engine Parts" - - //Hull plates - if(fuel > 5) - eventdat += "

Buy Hull Plates (-5FU)

" - else - eventdat += "

Cant afford to buy Hull Plates" - - //Electronics - if(fuel > 5) - eventdat += "

Buy Spare Electronics (-5FU)

" - else - eventdat += "

Cant afford to buy Spare Electronics" - - //Trade - if(fuel > 5) - eventdat += "

Trade Fuel for Food (-5FU,+5FO)

" - else - eventdat += "

Cant afford to Trade Fuel for Food 5) - eventdat += "

Trade Food for Fuel (+5FU,-5FO)

" - else - eventdat += "

Cant afford to Trade Food for FuelYou override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode." - name = "The Orion Trail: Realism Edition" - desc = "Learn how our ancestors got to Orion, and try not to die in the process!" - newgame() - emagged = 1 - -/mob/living/simple_animal/hostile/syndicate/ranged/orion - name = "Spaceport Security" - desc = "The Premier security forces for all spaceports found along the Orion Trail." - faction = list("orion") - loot = list(/obj/effect/mob_spawn/human/corpse/orionsecurity, - /obj/item/weapon/gun/projectile/automatic/c20r/unrestricted, - /obj/item/weapon/shield/energy) - -/obj/effect/mob_spawn/human/corpse/orionsecurity - name = "Spaceport Security" - uniform = /obj/item/clothing/under/syndicate - suit = /obj/item/clothing/suit/armor/vest - shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat - radio = /obj/item/device/radio/headset - mask = /obj/item/clothing/mask/gas - helmet = /obj/item/clothing/head/helmet/swat - back = /obj/item/weapon/storage/backpack - has_id = 1 - id_job = "Officer" - id_access = "Syndicate" - -/obj/item/weapon/orion_ship - name = "model settler ship" - desc = "A model spaceship, it looks like those used back in the day when travelling to Orion! It even has a miniature FX-293 reactor, which was renowned for its instability and tendency to explode..." - icon = 'icons/obj/toy.dmi' - icon_state = "ship" - w_class = 2 - var/active = 0 //if the ship is on - -/obj/item/weapon/orion_ship/examine(mob/user) - ..() - if(!(in_range(user, src))) - return - if(!active) - user << "There's a little switch on the bottom. It's flipped down." - else - user << "There's a little switch on the bottom. It's flipped up." - -/obj/item/weapon/orion_ship/attack_self(mob/user) //Minibomb-level explosion. Should probably be more because of how hard it is to survive the machine! Also, just over a 5-second fuse - if(active) - return - - message_admins("[key_name_admin(usr)] primed an explosive Orion ship for detonation.") - log_game("[key_name(usr)] primed an explosive Orion ship for detonation.") - - user << "You flip the switch on the underside of [src]." - active = 1 - src.visible_message("[src] softly beeps and whirs to life!") - playsound(src.loc, 'sound/machines/defib_SaftyOn.ogg', 25, 1) - say("This is ship ID #[rand(1,1000)] to Orion Port Authority. We're coming in for landing, over.") - sleep(20) - src.visible_message("[src] begins to vibrate...") - say("Uh, Port? Having some issues with our reactor, could you check it out? Over.") - sleep(30) - say("Oh, God! Code Eight! CODE EIGHT! IT'S GONNA BL-") - playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 25, 1) - sleep(3.6) - src.visible_message("[src] explodes!") - explosion(src.loc, 2,4,8, flame_range = 16) - qdel(src) - - -#undef ORION_TRAIL_WINTURN -#undef ORION_TRAIL_RAIDERS -#undef ORION_TRAIL_FLUX -#undef ORION_TRAIL_ILLNESS -#undef ORION_TRAIL_BREAKDOWN -#undef ORION_TRAIL_LING -#undef ORION_TRAIL_LING_ATTACK -#undef ORION_TRAIL_MALFUNCTION -#undef ORION_TRAIL_COLLISION -#undef ORION_TRAIL_SPACEPORT -#undef ORION_TRAIL_BLACKHOLE - -#undef ORION_STATUS_START -#undef ORION_STATUS_NORMAL -#undef ORION_STATUS_GAMEOVER -#undef ORION_STATUS_MARKET +/obj/machinery/computer/arcade/ + name = "random arcade" + desc = "random arcade machine" + icon_state = "arcade" + icon_keyboard = null + icon_screen = "invaders" + var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, + /obj/item/toy/AI = 2, + /obj/item/toy/codex_gigas = 2, + /obj/item/clothing/under/syndicate/tacticool = 2, + /obj/item/toy/sword = 2, + /obj/item/toy/gun = 2, + /obj/item/weapon/gun/projectile/shotgun/toy/crossbow = 2, + /obj/item/weapon/storage/box/fakesyndiesuit = 2, + /obj/item/weapon/storage/crayons = 2, + /obj/item/toy/spinningtoy = 2, + /obj/item/toy/prize/ripley = 1, + /obj/item/toy/prize/fireripley = 1, + /obj/item/toy/prize/deathripley = 1, + /obj/item/toy/prize/gygax = 1, + /obj/item/toy/prize/durand = 1, + /obj/item/toy/prize/honk = 1, + /obj/item/toy/prize/marauder = 1, + /obj/item/toy/prize/seraph = 1, + /obj/item/toy/prize/mauler = 1, + /obj/item/toy/prize/odysseus = 1, + /obj/item/toy/prize/phazon = 1, + /obj/item/toy/prize/reticence = 1, + /obj/item/toy/cards/deck = 2, + /obj/item/toy/nuke = 2, + /obj/item/toy/minimeteor = 2, + /obj/item/toy/carpplushie = 2, + /obj/item/toy/foamblade = 2, + /obj/item/toy/redbutton = 2, + /obj/item/toy/talking/owl = 2, + /obj/item/toy/talking/griffin = 2, + /obj/item/weapon/coin/antagtoken = 2, + /obj/item/stack/tile/fakespace/loaded = 2, + /obj/item/toy/toy_xeno = 2, + /obj/item/weapon/restraints/handcuffs/fake = 2 + ) + +/obj/machinery/computer/arcade/New() + ..() + // If it's a generic arcade machine, pick a random arcade + // circuit board for it and make the new machine + if(!circuit) + var/choice = pick(subtypesof(/obj/item/weapon/circuitboard/computer/arcade)) + var/obj/item/weapon/circuitboard/CB = new choice() + new CB.build_path(loc, CB) + qdel(src) + +/obj/machinery/computer/arcade/proc/prizevend() + if(prob(0.0001)) //1 in a million + new /obj/item/weapon/gun/energy/pulse(src) + + if(!contents.len) + var/prizeselect = pickweight(prizes) + new prizeselect(src.loc) + + if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun + new /obj/item/toy/ammo/gun(src.loc) + + else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit + new /obj/item/clothing/head/syndicatefake(src.loc) + + else + var/atom/movable/prize = pick(contents) + prize.loc = src.loc + +/obj/machinery/computer/arcade/emp_act(severity) + ..(severity) + + if(stat & (NOPOWER|BROKEN)) + return + + var/empprize = null + var/num_of_prizes = 0 + switch(severity) + if(1) + num_of_prizes = rand(1,4) + if(2) + num_of_prizes = rand(0,2) + for(var/i = num_of_prizes; i > 0; i--) + empprize = pickweight(prizes) + new empprize(src.loc) + explosion(src.loc, -1, 0, 1+num_of_prizes, flame_range = 1+num_of_prizes) + + +// ** BATTLE ** // + + +/obj/machinery/computer/arcade/battle + name = "arcade machine" + desc = "Does not support Pinball." + icon_state = "arcade" + circuit = /obj/item/weapon/circuitboard/computer/arcade/battle + var/enemy_name = "Space Villian" + var/temp = "Winners don't use space drugs" //Temporary message, for attack messages, etc + var/player_hp = 30 //Player health/attack points + var/player_mp = 10 + var/enemy_hp = 45 //Enemy health/attack points + var/enemy_mp = 20 + var/gameover = 0 + var/blocked = 0 //Player cannot attack/heal while set + var/turtle = 0 + +/obj/machinery/computer/arcade/battle/New() + ..() + var/name_action + var/name_part1 + var/name_part2 + + name_action = pick("Defeat ", "Annihilate ", "Save ", "Strike ", "Stop ", "Destroy ", "Robust ", "Romance ", "Pwn ", "Own ", "Ban ") + + name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ") + name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn", "Bloopers") + + src.enemy_name = replacetext((name_part1 + name_part2), "the ", "") + src.name = (name_action + name_part1 + name_part2) + +/obj/machinery/computer/arcade/battle/attack_hand(mob/user) + if(..()) + return + user.set_machine(src) + var/dat = "Close" + dat += "

[src.enemy_name]

" + + dat += "

[src.temp]

" + dat += "
Health: [src.player_hp] | Magic: [src.player_mp] | Enemy Health: [src.enemy_hp]
" + + if (src.gameover) + dat += "
New Game" + else + dat += "
Attack | " + dat += "Heal | " + dat += "Recharge Power" + + dat += "
" + + //user << browse(dat, "window=arcade") + //onclose(user, "arcade") + var/datum/browser/popup = new(user, "arcade", "Space Villian 2000") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/arcade/battle/Topic(href, href_list) + if(..()) + return + + if (!src.blocked && !src.gameover) + if (href_list["attack"]) + src.blocked = 1 + var/attackamt = rand(2,6) + src.temp = "You attack for [attackamt] damage!" + playsound(src.loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10) + src.updateUsrDialog() + if(turtle > 0) + turtle-- + + sleep(10) + src.enemy_hp -= attackamt + src.arcade_action() + + else if (href_list["heal"]) + src.blocked = 1 + var/pointamt = rand(1,3) + var/healamt = rand(6,8) + src.temp = "You use [pointamt] magic to heal for [healamt] damage!" + playsound(src.loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10) + src.updateUsrDialog() + turtle++ + + sleep(10) + src.player_mp -= pointamt + src.player_hp += healamt + src.blocked = 1 + src.updateUsrDialog() + src.arcade_action() + + else if (href_list["charge"]) + src.blocked = 1 + var/chargeamt = rand(4,7) + src.temp = "You regain [chargeamt] points" + playsound(src.loc, 'sound/arcade/Mana.ogg', 50, 1, extrarange = -3, falloff = 10) + src.player_mp += chargeamt + if(turtle > 0) + turtle-- + + src.updateUsrDialog() + sleep(10) + src.arcade_action() + + if (href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=arcade") + + else if (href_list["newgame"]) //Reset everything + temp = "New Round" + player_hp = 30 + player_mp = 10 + enemy_hp = 45 + enemy_mp = 20 + gameover = 0 + turtle = 0 + + if(emagged) + src.New() + emagged = 0 + + src.add_fingerprint(usr) + src.updateUsrDialog() + return + +/obj/machinery/computer/arcade/battle/proc/arcade_action() + if ((src.enemy_mp <= 0) || (src.enemy_hp <= 0)) + if(!gameover) + src.gameover = 1 + src.temp = "[src.enemy_name] has fallen! Rejoice!" + playsound(src.loc, 'sound/arcade/Win.ogg', 50, 1, extrarange = -3, falloff = 10) + + if(emagged) + feedback_inc("arcade_win_emagged") + new /obj/effect/spawner/newbomb/timer/syndicate(src.loc) + new /obj/item/clothing/head/collectable/petehat(src.loc) + message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") + log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") + src.New() + emagged = 0 + else + feedback_inc("arcade_win_normal") + prizevend() + + else if (emagged && (turtle >= 4)) + var/boomamt = rand(5,10) + src.temp = "[src.enemy_name] throws a bomb, exploding you for [boomamt] damage!" + playsound(src.loc, 'sound/arcade/Boom.ogg', 50, 1, extrarange = -3, falloff = 10) + src.player_hp -= boomamt + + else if ((src.enemy_mp <= 5) && (prob(70))) + var/stealamt = rand(2,3) + src.temp = "[src.enemy_name] steals [stealamt] of your power!" + playsound(src.loc, 'sound/arcade/Steal.ogg', 50, 1, extrarange = -3, falloff = 10) + src.player_mp -= stealamt + src.updateUsrDialog() + + if (src.player_mp <= 0) + src.gameover = 1 + sleep(10) + src.temp = "You have been drained! GAME OVER" + playsound(src.loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10) + if(emagged) + feedback_inc("arcade_loss_mana_emagged") + usr.gib() + else + feedback_inc("arcade_loss_mana_normal") + + else if ((src.enemy_hp <= 10) && (src.enemy_mp > 4)) + src.temp = "[src.enemy_name] heals for 4 health!" + playsound(src.loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10) + src.enemy_hp += 4 + src.enemy_mp -= 4 + + else + var/attackamt = rand(3,6) + src.temp = "[src.enemy_name] attacks for [attackamt] damage!" + playsound(src.loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10) + src.player_hp -= attackamt + + if ((src.player_mp <= 0) || (src.player_hp <= 0)) + src.gameover = 1 + src.temp = "You have been crushed! GAME OVER" + playsound(src.loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10) + if(emagged) + feedback_inc("arcade_loss_hp_emagged") + usr.gib() + else + feedback_inc("arcade_loss_hp_normal") + + src.blocked = 0 + return + + +/obj/machinery/computer/arcade/battle/emag_act(mob/user) + if(!emagged) + temp = "If you die in the game, you die for real!" + player_hp = 30 + player_mp = 10 + enemy_hp = 45 + enemy_mp = 20 + gameover = 0 + blocked = 0 + + emagged = 1 + + enemy_name = "Cuban Pete" + name = "Outbomb Cuban Pete" + + + src.updateUsrDialog() + + + +// *** THE ORION TRAIL ** // + +#define ORION_TRAIL_WINTURN 9 + +//Orion Trail Events +#define ORION_TRAIL_RAIDERS "Raiders" +#define ORION_TRAIL_FLUX "Interstellar Flux" +#define ORION_TRAIL_ILLNESS "Illness" +#define ORION_TRAIL_BREAKDOWN "Breakdown" +#define ORION_TRAIL_LING "Changelings?" +#define ORION_TRAIL_LING_ATTACK "Changeling Ambush" +#define ORION_TRAIL_MALFUNCTION "Malfunction" +#define ORION_TRAIL_COLLISION "Collision" +#define ORION_TRAIL_SPACEPORT "Spaceport" +#define ORION_TRAIL_BLACKHOLE "BlackHole" + +#define ORION_STATUS_START 1 +#define ORION_STATUS_NORMAL 2 +#define ORION_STATUS_GAMEOVER 3 +#define ORION_STATUS_MARKET 4 + +/obj/machinery/computer/arcade/orion_trail + name = "The Orion Trail" + desc = "Learn how our ancestors got to Orion, and have fun in the process!" + icon_state = "arcade" + circuit = /obj/item/weapon/circuitboard/computer/arcade/orion_trail + var/busy = 0 //prevent clickspam that allowed people to ~speedrun~ the game. + var/engine = 0 + var/hull = 0 + var/electronics = 0 + var/food = 80 + var/fuel = 60 + var/turns = 4 + var/alive = 4 + var/eventdat = null + var/event = null + var/list/settlers = list("Harry","Larry","Bob") + var/list/events = list(ORION_TRAIL_RAIDERS = 3, + ORION_TRAIL_FLUX = 1, + ORION_TRAIL_ILLNESS = 3, + ORION_TRAIL_BREAKDOWN = 2, + ORION_TRAIL_LING = 3, + ORION_TRAIL_MALFUNCTION = 2, + ORION_TRAIL_COLLISION = 1, + ORION_TRAIL_SPACEPORT = 2 + ) + var/list/stops = list() + var/list/stopblurbs = list() + var/lings_aboard = 0 + var/spaceport_raided = 0 + var/spaceport_freebie = 0 + var/last_spaceport_action = "" + var/gameStatus = ORION_STATUS_START + var/canContinueEvent = 0 + +/obj/machinery/computer/arcade/orion_trail/New() + ..() + // Sets up the main trail + stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") + stopblurbs = list( + "Pluto, long since occupied with long-range sensors and scanners, stands ready to, and indeed continues to probe the far reaches of the galaxy.", + "At the edge of the Sol system lies a treacherous asteroid belt. Many have been crushed by stray asteroids and misguided judgement.", + "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now a low-population sanctuary for adventurers and traders.", + "This region of space is particularly devoid of matter. Such low-density pockets are known to exist, but the vastness of it is astounding.", + "Rigel Prime, the center of the Rigel system, burns hot, basking its planetary bodies in warmth and radiation.", + "Tau Ceti Beta has recently become a waypoint for colonists headed towards Orion. There are many ships and makeshift stations in the vicinity.", + "Sensors indicate that a black hole's gravitational field is affecting the region of space we were headed through. We could stay of course, but risk of being overcome by its gravity, or we could change course to go around, which will take longer.", + "You have come into range of the first man-made structure in this region of space. It has been constructed not by travellers from Sol, but by colonists from Orion. It stands as a monument to the colonists' success.", + "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for mankind!" + ) + +/obj/machinery/computer/arcade/orion_trail/proc/newgame() + // Set names of settlers in crew + settlers = list() + for(var/i = 1; i <= 3; i++) + add_crewmember() + add_crewmember("[usr]") + // Re-set items to defaults + engine = 1 + hull = 1 + electronics = 1 + food = 80 + fuel = 60 + alive = 4 + turns = 1 + event = null + gameStatus = ORION_STATUS_NORMAL + lings_aboard = 0 + + //spaceport junk + spaceport_raided = 0 + spaceport_freebie = 0 + last_spaceport_action = "" + +/obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user) + if(..()) + return + if(fuel <= 0 || food <=0 || settlers.len == 0) + gameStatus = ORION_STATUS_GAMEOVER + event = null + user.set_machine(src) + var/dat = "" + if(gameStatus == ORION_STATUS_GAMEOVER) + dat = "

Game Over

" + dat += "Like many before you, your crew never made it to Orion, lost to space...
Forever." + if(settlers.len == 0) + dat += "
Your entire crew died, your ship joins the fleet of ghost-ships littering the galaxy." + else + if(food <= 0) + dat += "
You ran out of food and starved." + if(emagged) + user.nutrition = 0 //yeah you pretty hongry + user << "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor." + if(fuel <= 0) + dat += "
You ran out of fuel, and drift, slowly, into a star." + if(emagged) + var/mob/living/M = user + M.adjust_fire_stacks(5) + M.IgniteMob() //flew into a star, so you're on fire + user << "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames." + dat += "

OK...

" + + if(emagged) + user << "You're never going to make it to Orion..." + user.death() + emagged = 0 //removes the emagged status after you lose + gameStatus = ORION_STATUS_START + name = "The Orion Trail" + desc = "Learn how our ancestors got to Orion, and have fun in the process!" + + else if(event) + dat = eventdat + else if(gameStatus == ORION_STATUS_NORMAL) + var/title = stops[turns] + var/subtext = stopblurbs[turns] + dat = "

[title]

" + dat += "[subtext]" + dat += "

Crew:

" + dat += english_list(settlers) + dat += "
Food: [food] | Fuel: [fuel]" + dat += "
Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]" + if(turns == 7) + dat += "

Go Around Continue

" + else + dat += "

Continue

" + dat += "

Kill a crewmember

" + dat += "

Close

" + else + dat = "

The Orion Trail

" + dat += "

Experience the journey of your ancestors!



" + dat += "
New Game
" + dat += "

Close

" + var/datum/browser/popup = new(user, "arcade", "The Orion Trail",400,700) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/arcade/orion_trail/Topic(href, href_list) + if(..()) + return + if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=arcade") + + if(busy) + return + busy = 1 + + if (href_list["continue"]) //Continue your travels + if(gameStatus == ORION_STATUS_NORMAL && !event && turns != 7) + if(turns >= ORION_TRAIL_WINTURN) + win() + else + food -= (alive+lings_aboard)*2 + fuel -= 5 + if(turns == 2 && prob(30)) + event = ORION_TRAIL_COLLISION + event() + else if(prob(75)) + event = pickweight(events) + if(lings_aboard) + if(event == ORION_TRAIL_LING || prob(55)) + event = ORION_TRAIL_LING_ATTACK + event() + turns += 1 + if(emagged) + var/mob/living/carbon/M = usr //for some vars + switch(event) + if(ORION_TRAIL_RAIDERS) + if(prob(50)) + usr << "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?" + M.hallucination += 30 + else + usr << "Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there..." + M.take_organ_damage(30) + playsound(loc, 'sound/weapons/genhit2.ogg', 100, 1) + if(ORION_TRAIL_ILLNESS) + var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS + if(severity == 1) + M << "You suddenly feel slightly nauseous." //got off lucky + if(severity == 2) + usr << "You suddenly feel extremely nauseous and hunch over until it passes." + M.Stun(3) + if(severity >= 3) //you didn't pray hard enough + M << "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit." + M.Stun(5) + sleep(30) + M.vomit(50) + if(ORION_TRAIL_FLUX) + if(prob(75)) + M.Weaken(3) + say("A sudden gust of powerful wind slams [M] into the floor!") + M.take_organ_damage(25) + playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1) + else + M << "A violent gale blows past you, and you barely manage to stay standing!" + if(ORION_TRAIL_COLLISION) //by far the most damaging event + if(prob(90)) + playsound(src.loc, 'sound/effects/bang.ogg', 100, 1) + var/turf/open/floor/F + for(F in orange(1, src)) + F.ChangeTurf(F.baseturf) + say("Something slams into the floor around [src], exposing it to space!") + if(hull) + sleep(10) + say("A new floor suddenly appears around [src]. What the hell?") + playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1) + var/turf/open/space/T + for(T in orange(1, src)) + T.ChangeTurf(/turf/open/floor/plating/) + else + say("Something slams into the floor around [src] - luckily, it didn't get through!") + playsound(src.loc, 'sound/effects/bang.ogg', 50, 1) + if(ORION_TRAIL_MALFUNCTION) + playsound(src.loc, 'sound/effects/EMPulse.ogg', 50, 1) + src.visible_message("[src] malfunctions, randomizing in-game stats!") + var/oldfood = food + var/oldfuel = fuel + food = rand(10,80) / rand(1,2) + fuel = rand(10,60) / rand(1,2) + if(electronics) + sleep(10) + if(oldfuel > fuel && oldfood > food) + src.audible_message("[src] lets out a somehow reassuring chime.") + else if(oldfuel < fuel || oldfood < food) + src.audible_message("[src] lets out a somehow ominous chime.") + food = oldfood + fuel = oldfuel + playsound(src.loc, 'sound/machines/chime.ogg', 50, 1) + + else if(href_list["newgame"]) //Reset everything + if(gameStatus == ORION_STATUS_START) + newgame() + else if(href_list["menu"]) //back to the main menu + if(gameStatus == ORION_STATUS_GAMEOVER) + gameStatus = ORION_STATUS_START + event = null + food = 80 + fuel = 60 + settlers = list("Harry","Larry","Bob") + else if(href_list["slow"]) //slow down + if(event == ORION_TRAIL_FLUX) + food -= (alive+lings_aboard)*2 + fuel -= 5 + event = null + else if(href_list["pastblack"]) //slow down + if(turns == 7) + food -= ((alive+lings_aboard)*2)*3 + fuel -= 15 + turns += 1 + event = null + else if(href_list["useengine"]) //use parts + if(event == ORION_TRAIL_BREAKDOWN) + engine = max(0, --engine) + event = null + else if(href_list["useelec"]) //use parts + if(event == ORION_TRAIL_MALFUNCTION) + electronics = max(0, --electronics) + event = null + else if(href_list["usehull"]) //use parts + if(event == ORION_TRAIL_COLLISION) + hull = max(0, --hull) + event = null + else if(href_list["wait"]) //wait 3 days + if(event == ORION_TRAIL_BREAKDOWN || event == ORION_TRAIL_MALFUNCTION || event == ORION_TRAIL_COLLISION) + food -= ((alive+lings_aboard)*2)*3 + event = null + else if(href_list["keepspeed"]) //keep speed + if(event == ORION_TRAIL_FLUX) + if(prob(75)) + event = "Breakdown" + event() + else + event = null + else if(href_list["blackhole"]) //keep speed past a black hole + if(turns == 7) + if(prob(75)) + event = ORION_TRAIL_BLACKHOLE + event() + if(emagged) //has to be here because otherwise it doesn't work + playsound(src.loc, 'sound/effects/supermatter.ogg', 100, 1) + say("A miniature black hole suddenly appears in front of [src], devouring [usr] alive!") + usr.Stun(10) //you can't run :^) + var/S = new /obj/singularity/academy(usr.loc) + emagged = 0 //immediately removes emagged status so people can't kill themselves by sprinting up and interacting + sleep(50) + say("[S] winks out, just as suddenly as it appeared.") + qdel(S) + else + event = null + turns += 1 + else if(href_list["holedeath"]) + if(event == ORION_TRAIL_BLACKHOLE) + gameStatus = ORION_STATUS_GAMEOVER + event = null + else if(href_list["eventclose"]) //end an event + if(canContinueEvent) + event = null + + else if(href_list["killcrew"]) //shoot a crewmember + if(gameStatus == ORION_STATUS_NORMAL || event == ORION_TRAIL_LING) + var/sheriff = remove_crewmember() //I shot the sheriff + playsound(loc,'sound/weapons/Gunshot.ogg', 100, 1) + + if(settlers.len == 0 || alive == 0) + say("The last crewmember [sheriff], shot themselves, GAME OVER!") + if(emagged) + usr.death(0) + emagged = 0 + gameStatus = ORION_STATUS_GAMEOVER + event = null + else if(emagged) + if(usr.name == sheriff) + say("The crew of the ship chose to kill [usr.name]!") + usr.death(0) + + if(event == ORION_TRAIL_LING) //only ends the ORION_TRAIL_LING event, since you can do this action in multiple places + event = null + + //Spaceport specific interactions + //they get a header because most of them don't reset event (because it's a shop, you leave when you want to) + //they also call event() again, to regen the eventdata, which is kind of odd but necessary + else if(href_list["buycrew"]) //buy a crewmember + if(gameStatus == ORION_STATUS_MARKET) + if(!spaceport_raided && food >= 10 && fuel >= 10) + var/bought = add_crewmember() + last_spaceport_action = "You hired [bought] as a new crewmember." + fuel -= 10 + food -= 10 + event() + + else if(href_list["sellcrew"]) //sell a crewmember + if(gameStatus == ORION_STATUS_MARKET) + if(!spaceport_raided && settlers.len > 1) + var/sold = remove_crewmember() + last_spaceport_action = "You sold your crewmember, [sold]!" + fuel += 7 + food += 7 + event() + + else if(href_list["leave_spaceport"]) + if(gameStatus == ORION_STATUS_MARKET) + event = null + gameStatus = ORION_STATUS_NORMAL + spaceport_raided = 0 + spaceport_freebie = 0 + last_spaceport_action = "" + + else if(href_list["raid_spaceport"]) + if(gameStatus == ORION_STATUS_MARKET) + if(!spaceport_raided) + var/success = min(15 * alive,100) //default crew (4) have a 60% chance + spaceport_raided = 1 + + var/FU = 0 + var/FO = 0 + if(prob(success)) + FU = rand(5,15) + FO = rand(5,15) + last_spaceport_action = "You successfully raided the spaceport! you gained [FU] Fuel and [FO] Food! (+[FU]FU,+[FO]FO)" + else + FU = rand(-5,-15) + FO = rand(-5,-15) + last_spaceport_action = "You failed to raid the spaceport! you lost [FU*-1] Fuel and [FO*-1] Food in your scramble to escape! ([FU]FU,[FO]FO)" + + //your chance of lose a crewmember is 1/2 your chance of success + //this makes higher % failures hurt more, don't get cocky space cowboy! + if(prob(success*5)) + var/lost_crew = remove_crewmember() + last_spaceport_action = "You failed to raid the spaceport! you lost [FU*-1] Fuel and [FO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FO]FO,-Crew)" + if(emagged) + say("WEEWOO WEEWOO, Spaceport Security en route!") + for(var/i, i<=3, i++) + var/mob/living/simple_animal/hostile/syndicate/ranged/orion/O = new/mob/living/simple_animal/hostile/syndicate/ranged/orion(get_turf(src)) + O.target = usr + + + fuel += FU + food += FO + event() + + else if(href_list["buyparts"]) + if(gameStatus == ORION_STATUS_MARKET) + if(!spaceport_raided && fuel > 5) + switch(text2num(href_list["buyparts"])) + if(1) //Engine Parts + engine++ + last_spaceport_action = "Bought Engine Parts" + if(2) //Hull Plates + hull++ + last_spaceport_action = "Bought Hull Plates" + if(3) //Spare Electronics + electronics++ + last_spaceport_action = "Bought Spare Electronics" + fuel -= 5 //they all cost 5 + event() + + else if(href_list["trade"]) + if(gameStatus == ORION_STATUS_MARKET) + if(!spaceport_raided) + switch(text2num(href_list["trade"])) + if(1) //Fuel + if(fuel > 5) + fuel -= 5 + food += 5 + last_spaceport_action = "Traded Fuel for Food" + event() + if(2) //Food + if(food > 5) + fuel += 5 + food -= 5 + last_spaceport_action = "Traded Food for Fuel" + event() + + src.add_fingerprint(usr) + src.updateUsrDialog() + busy = 0 + return + + +/obj/machinery/computer/arcade/orion_trail/proc/event() + eventdat = "

[event]

" + canContinueEvent = 0 + switch(event) + if(ORION_TRAIL_RAIDERS) + eventdat += "Raiders have come aboard your ship!" + if(prob(50)) + var/sfood = rand(1,10) + var/sfuel = rand(1,10) + food -= sfood + fuel -= sfuel + eventdat += "
They have stolen [sfood] Food and [sfuel] Fuel." + else if(prob(10)) + var/deadname = remove_crewmember() + eventdat += "
[deadname] tried to fight back but was killed." + else + eventdat += "
Fortunately you fended them off without any trouble." + eventdat += "

Continue

" + eventdat += "

Close

" + canContinueEvent = 1 + + if(ORION_TRAIL_FLUX) + eventdat += "This region of space is highly turbulent.
If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." + eventdat += "
What will you do?" + eventdat += "

Slow Down Continue

" + eventdat += "

Close

" + + if(ORION_TRAIL_ILLNESS) + eventdat += "A deadly illness has been contracted!" + var/deadname = remove_crewmember() + eventdat += "
[deadname] was killed by the disease." + eventdat += "

Continue

" + eventdat += "

Close

" + canContinueEvent = 1 + + if(ORION_TRAIL_BREAKDOWN) + eventdat += "Oh no! The engine has broken down!" + eventdat += "
You can repair it with an engine part, or you can make repairs for 3 days." + if(engine >= 1) + eventdat += "

Use PartWait

" + else + eventdat += "

Wait

" + eventdat += "

Close

" + + if(ORION_TRAIL_MALFUNCTION) + eventdat += "The ship's systems are malfunctioning!" + eventdat += "
You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." + if(electronics >= 1) + eventdat += "

Use PartWait

" + else + eventdat += "

Wait

" + eventdat += "

Close

" + + if(ORION_TRAIL_COLLISION) + eventdat += "Something hit us! Looks like there's some hull damage." + if(prob(25)) + var/sfood = rand(5,15) + var/sfuel = rand(5,15) + food -= sfood + fuel -= sfuel + eventdat += "
[sfood] Food and [sfuel] Fuel was vented out into space." + if(prob(10)) + var/deadname = remove_crewmember() + eventdat += "
[deadname] was killed by rapid depressurization." + eventdat += "
You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." + if(hull >= 1) + eventdat += "

Use PartWait

" + else + eventdat += "

Wait

" + eventdat += "

Close

" + + if(ORION_TRAIL_BLACKHOLE) + eventdat += "You were swept away into the black hole." + eventdat += "

Oh...

" + eventdat += "

Close

" + settlers = list() + + if(ORION_TRAIL_LING) + eventdat += "Strange reports warn of changelings infiltrating crews on trips to Orion..." + if(settlers.len <= 2) + eventdat += "
Your crew's chance of reaching Orion is so slim the changelings likely avoided your ship..." + eventdat += "

Continue

" + eventdat += "

Close

" + if(prob(10)) // "likely", I didn't say it was guaranteed! + lings_aboard = min(++lings_aboard,2) + else + if(lings_aboard) //less likely to stack lings + if(prob(20)) + lings_aboard = min(++lings_aboard,2) + else if(prob(70)) + lings_aboard = min(++lings_aboard,2) + + eventdat += "

Kill a crewmember

" + eventdat += "

Risk it

" + eventdat += "

Close

" + canContinueEvent = 1 + + if(ORION_TRAIL_LING_ATTACK) + if(lings_aboard <= 0) //shouldn't trigger, but hey. + eventdat += "Haha, fooled you, there are no changelings on board!" + eventdat += "
(You should report this to a coder :S)" + else + var/ling1 = remove_crewmember() + var/ling2 = "" + if(lings_aboard >= 2) + ling2 = remove_crewmember() + + eventdat += "Oh no, some of your crew are Changelings!" + if(ling2) + eventdat += "
[ling1] and [ling2]'s arms twist and contort into grotesque blades!" + else + eventdat += "
[ling1]'s arm twists and contorts into a grotesque blade!" + + var/chance2attack = alive*20 + if(prob(chance2attack)) + var/chancetokill = 30*lings_aboard-(5*alive) //eg: 30*2-(10) = 50%, 2 lings, 2 crew is 50% chance + if(prob(chancetokill)) + var/deadguy = remove_crewmember() + eventdat += "
The Changeling[ling2 ? "s":""] run[ling2 ? "":"s"] up to [deadguy] and capitulates them!" + else + eventdat += "
You valiantly fight off the Changeling[ling2 ? "s":""]!" + eventdat += "
You cut the Changeling[ling2 ? "s":""] up into meat... Eww" + if(ling2) + food += 30 + lings_aboard = max(0,lings_aboard-2) + else + food += 15 + lings_aboard = max(0,--lings_aboard) + else + eventdat += "
The Changeling[ling2 ? "s":""] run[ling2 ? "":"s"] away, What wimps!" + if(ling2) + lings_aboard = max(0,lings_aboard-2) + else + lings_aboard = max(0,--lings_aboard) + + eventdat += "

Continue

" + eventdat += "

Close

" + canContinueEvent = 1 + + + if(ORION_TRAIL_SPACEPORT) + gameStatus = ORION_STATUS_MARKET + if(spaceport_raided) + eventdat += "The Spaceport is on high alert! they wont let you dock since you tried to attack them!" + if(last_spaceport_action) + eventdat += "
Last Spaceport Action: [last_spaceport_action]" + eventdat += "

Depart Spaceport

" + eventdat += "

Close

" + else + eventdat += "You pull the ship up to dock at a nearby Spaceport, lucky find!" + eventdat += "
This Spaceport is home to travellers who failed to reach Orion, but managed to find a different home..." + eventdat += "
Trading terms: FU = Fuel, FO = Food" + if(last_spaceport_action) + eventdat += "
Last Spaceport Action: [last_spaceport_action]" + eventdat += "

Crew:

" + eventdat += english_list(settlers) + eventdat += "
Food: [food] | Fuel: [fuel]" + eventdat += "
Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]" + + + //If your crew is pathetic you can get freebies (provided you haven't already gotten one from this port) + if(!spaceport_freebie && (fuel < 20 || food < 20)) + spaceport_freebie++ + var/FU = 10 + var/FO = 10 + var/freecrew = 0 + if(prob(30)) + FU = 25 + FO = 25 + + if(prob(10)) + add_crewmember() + freecrew++ + + eventdat += "
The traders of the spaceport take pitty on you, and give you some food and fuel (+[FU]FU,+[FO]FO)" + if(freecrew) + eventdat += "
You also gain a new crewmember!" + + fuel += FU + food += FO + + //CREW INTERACTIONS + eventdat += "

Crew Management:

" + + //Buy crew + if(food >= 10 && fuel >= 10) + eventdat += "

Hire a new Crewmember (-10FU,-10FO)

" + else + eventdat += "

Cant afford a new Crewmember

" + + //Sell crew + if(settlers.len > 1) + eventdat += "

Sell crew for Fuel and Food (+7FU,+7FO)

" + else + eventdat += "

Cant afford to sell a Crewmember

" + + //BUY/SELL STUFF + eventdat += "

Spare Parts:

" + + //Engine parts + if(fuel > 5) + eventdat += "

Buy Engine Parts (-5FU)

" + else + eventdat += "

Cant afford to buy Engine Parts" + + //Hull plates + if(fuel > 5) + eventdat += "

Buy Hull Plates (-5FU)

" + else + eventdat += "

Cant afford to buy Hull Plates" + + //Electronics + if(fuel > 5) + eventdat += "

Buy Spare Electronics (-5FU)

" + else + eventdat += "

Cant afford to buy Spare Electronics" + + //Trade + if(fuel > 5) + eventdat += "

Trade Fuel for Food (-5FU,+5FO)

" + else + eventdat += "

Cant afford to Trade Fuel for Food 5) + eventdat += "

Trade Food for Fuel (+5FU,-5FO)

" + else + eventdat += "

Cant afford to Trade Food for FuelYou override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode." + name = "The Orion Trail: Realism Edition" + desc = "Learn how our ancestors got to Orion, and try not to die in the process!" + newgame() + emagged = 1 + +/mob/living/simple_animal/hostile/syndicate/ranged/orion + name = "Spaceport Security" + desc = "The Premier security forces for all spaceports found along the Orion Trail." + faction = list("orion") + loot = list(/obj/effect/mob_spawn/human/corpse/orionsecurity, + /obj/item/weapon/gun/projectile/automatic/c20r/unrestricted, + /obj/item/weapon/shield/energy) + +/obj/effect/mob_spawn/human/corpse/orionsecurity + name = "Spaceport Security" + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/armor/vest + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + radio = /obj/item/device/radio/headset + mask = /obj/item/clothing/mask/gas + helmet = /obj/item/clothing/head/helmet/swat + back = /obj/item/weapon/storage/backpack + has_id = 1 + id_job = "Officer" + id_access = "Syndicate" + +/obj/item/weapon/orion_ship + name = "model settler ship" + desc = "A model spaceship, it looks like those used back in the day when travelling to Orion! It even has a miniature FX-293 reactor, which was renowned for its instability and tendency to explode..." + icon = 'icons/obj/toy.dmi' + icon_state = "ship" + w_class = 2 + var/active = 0 //if the ship is on + +/obj/item/weapon/orion_ship/examine(mob/user) + ..() + if(!(in_range(user, src))) + return + if(!active) + user << "There's a little switch on the bottom. It's flipped down." + else + user << "There's a little switch on the bottom. It's flipped up." + +/obj/item/weapon/orion_ship/attack_self(mob/user) //Minibomb-level explosion. Should probably be more because of how hard it is to survive the machine! Also, just over a 5-second fuse + if(active) + return + + message_admins("[key_name_admin(usr)] primed an explosive Orion ship for detonation.") + log_game("[key_name(usr)] primed an explosive Orion ship for detonation.") + + user << "You flip the switch on the underside of [src]." + active = 1 + src.visible_message("[src] softly beeps and whirs to life!") + playsound(src.loc, 'sound/machines/defib_SaftyOn.ogg', 25, 1) + say("This is ship ID #[rand(1,1000)] to Orion Port Authority. We're coming in for landing, over.") + sleep(20) + src.visible_message("[src] begins to vibrate...") + say("Uh, Port? Having some issues with our reactor, could you check it out? Over.") + sleep(30) + say("Oh, God! Code Eight! CODE EIGHT! IT'S GONNA BL-") + playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 25, 1) + sleep(3.6) + src.visible_message("[src] explodes!") + explosion(src.loc, 2,4,8, flame_range = 16) + qdel(src) + + +#undef ORION_TRAIL_WINTURN +#undef ORION_TRAIL_RAIDERS +#undef ORION_TRAIL_FLUX +#undef ORION_TRAIL_ILLNESS +#undef ORION_TRAIL_BREAKDOWN +#undef ORION_TRAIL_LING +#undef ORION_TRAIL_LING_ATTACK +#undef ORION_TRAIL_MALFUNCTION +#undef ORION_TRAIL_COLLISION +#undef ORION_TRAIL_SPACEPORT +#undef ORION_TRAIL_BLACKHOLE + +#undef ORION_STATUS_START +#undef ORION_STATUS_NORMAL +#undef ORION_STATUS_GAMEOVER +#undef ORION_STATUS_MARKET diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index dc0b949a187..f6011552816 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -356,7 +356,7 @@ if (!subject.getorgan(/obj/item/organ/brain)) scantemp = "No signs of intelligence detected." return - if (subject.suiciding == 1) + if (subject.suiciding == 1 || subject.hellbound) scantemp = "Subject's brain is not responding to scanning stimuli." return if ((subject.disabilities & NOCLONE) && (src.scanner.scan_level < 2)) diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 192ff9df7d1..45f7b995486 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -111,7 +111,7 @@ || locate(/obj/machinery/computer/cloning, get_step(src, SOUTH)) \ || locate(/obj/machinery/computer/cloning, get_step(src, EAST)) \ || locate(/obj/machinery/computer/cloning, get_step(src, WEST))) - if(!occupant.suiciding && !(occupant.disabilities & NOCLONE)) + if(!occupant.suiciding && !(occupant.disabilities & NOCLONE) && !occupant.hellbound) occupant.notify_ghost_cloning("Your corpse has been placed into a cloning scanner. Re-enter your corpse if you want to be cloned!", source = src) var/obj/machinery/computer/scan_consolenew/console diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index f7ffd73e691..6ff3d3ff714 100755 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -9,6 +9,7 @@ * Snap pops * Mech prizes * AI core prizes + * Toy codex gigas * Skeleton toys * Cards * Toy nuke @@ -695,6 +696,29 @@ return ..() +/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" + w_class = 2 + var/cooldown = 0 + +/obj/item/toy/codex_gigas/attack_self(mob/user) + if(!cooldown) + var/datum/devilinfo/devil = randomDevilInfo() + user << "You press the button on [src]." + cooldown = 1 + playsound(user, 'sound/machines/click.ogg', 20, 1) + src.loc.visible_message("\icon[src]Some fun facts about: [devil.truename]") + src.loc.visible_message("[lawlorify[LORE][devil.bane]]") + src.loc.visible_message("[lawlorify[LORE][devil.obligation]]") + src.loc.visible_message("[lawlorify[LORE][devil.ban]]") + src.loc.visible_message("[lawlorify[LORE][devil.banish]]") + spawn(60) cooldown = 0 + return + ..() + /obj/item/toy/talking name = "talking action figure" desc = "A generic action figure modeled after nothing in particular." diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 9e5ecd557b7..5517716c4bf 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -463,7 +463,7 @@ busy = 0 update_icon() return - if(!H.suiciding && !(H.disabilities & NOCLONE)) + if(!H.suiciding && !(H.disabilities & NOCLONE)&& !H.hellbound) H.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!", source = src) user.visible_message("[user] begins to place [src] on [M.name]'s chest.", "You begin to place [src] on [M.name]'s chest...") @@ -497,6 +497,8 @@ if (H.suiciding || (H.disabilities & NOCLONE)) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile." + else if (H.hellbound) + failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's soul appears to be on another plane of existance. Further attempts futile." else if (tplus > tlimit) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Body has decayed for too long. Further attempts futile." else if (!H.getorgan(/obj/item/organ/heart)) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index e8bbfbed48e..52d218bd81d 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -418,3 +418,64 @@ M.faction = user.faction.Copy() M.Copy_Parent(user, 100, user.health/2.5, 12, 30) M.GiveTarget(L) + + + + +/obj/item/weapon/twohanded/pitchfork + icon_state = "pitchfork0" + name = "pitchfork" + desc = "A simple tool used for moving hay." + force = 7 + throwforce = 15 + w_class = 4 + force_unwielded = 7 + force_wielded = 15 + attack_verb = list("attacked", "impaled", "pierced") + hitsound = 'sound/weapons/bladeslice.ogg' + sharpness = IS_SHARP + +/obj/item/weapon/twohanded/pitchfork/demonic + name = "demonic pitchfork" + desc = "A red pitchfork, it looks like the work of the devil." + force = 19 + throwforce = 24 + force_unwielded = 19 + force_wielded = 25 + +/obj/item/weapon/twohanded/pitchfork/demonic/greater + force = 24 + throwforce = 50 + force_unwielded = 24 + force_wielded = 34 + +/obj/item/weapon/twohanded/pitchfork/demonic/ascended + force = 100 + throwforce = 100 + force_unwielded = 100 + force_wielded = 500000 // Kills you DEAD. + +/obj/item/weapon/twohanded/pitchfork/update_icon() //Currently only here to fuck with the on-mob icons. + icon_state = "pitchfork[wielded]" + +/obj/item/weapon/twohanded/pitchfork/suicide_act(mob/user) + user.visible_message("[user] impales \himself in \his abdomen with [src]! It looks like \he's trying to commit suicide..") + return (BRUTELOSS) + +/obj/item/weapon/twohanded/pitchfork/demonic/pickup(mob/user) + if(istype(user, /mob/living)) + var/mob/living/U = user + if(!U.mind.devilinfo) + U.visible_message("As [U] picks [src] up, [U]'s arms briefly catch fire.", \ + "\"As you pick up the [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("l_arm", "r_arm")) + else + U.adjustFireLoss(rand(force/2,force)) + +/obj/item/weapon/twohanded/pitchfork/demonic/attack(mob/target, mob/living/carbon/human/user) + if(!user.mind.devilinfo) + user << "The [src] burns in your hands." + user.apply_damage(rand(force/2, force), BURN, pick("l_arm", "r_arm")) + ..() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 60129c99d52..87773f725a3 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -699,6 +699,14 @@ var/global/BSACooldown = 0 if(!ai_number) usr << "No AIs located" //Just so you know the thing is actually working and not just ignoring you. +/datum/admins/proc/output_devil_info() + var/devil_number = 0 + for(var/D in ticker.mode.devils) + devil_number++ + usr << "Devil #[devil_number]:

" + ticker.mode.printdevilinfo(D) + if(!devil_number) + usr << "No Devils located" //Just so you know the thing is actually working and not just ignoring you. + /datum/admins/proc/manage_free_slots() if(!check_rights()) return diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index b8e4aee8728..220b1b4c9e9 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -437,7 +437,7 @@ if(M) dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" + dat += "FLW" dat += "Show Objective" else dat += "[wizard.name]([wizard.key])Wizard body destroyed!" @@ -592,6 +592,35 @@ dat += "PM" dat += "" + if(ticker.mode.devils.len) + dat += "
" + for(var/X in ticker.mode.devils) + var/datum/mind/devil = X + var/mob/M = devil.current + if(M) + dat += "" + dat += "" + dat += "" + dat += "" + else + dat += "" + dat += "" + dat += "
devils
[M.real_name] : [devil.devilinfo.truename][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
Show all devil info
[devil.name] : [devil.devilinfo.truename] ([devil.key])devil body destroyed!
PM
" + + if(ticker.mode.sintouched.len) + dat += "
" + for(var/X in ticker.mode.sintouched) + var/datum/mind/sintouched = X + var/mob/M = sintouched.current + if(M) + dat += "" + dat += "" + dat += "" + else + dat += "" + dat += "" + dat += "
sintouched
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
[sintouched.name]([sintouched.key])sintouched body destroyed!
PM
" + var/list/blob_minds = list() for(var/mob/camera/blob/B in mob_list) blob_minds |= B.mind diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 012c704f2c3..4b0278dac25 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1608,6 +1608,9 @@ else if(href_list["adminchecklaws"]) output_ai_laws() + + else if(href_list["admincheckdevilinfo"]) + output_devil_info() else if(href_list["adminmoreinfo"]) var/mob/M = locate(href_list["adminmoreinfo"]) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index c459acf5217..2f678e92241 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -343,7 +343,6 @@ BLIND // can't see anything var/suit_color = null var/obj/item/clothing/tie/hastie = null - /obj/item/clothing/under/worn_overlays(var/isinhands = FALSE) . = list() diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index a9c3e2177c7..428633cdbd0 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -118,4 +118,4 @@ desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple." icon_state = "scrubspurple" item_color = "scrubspurple" - can_adjust = 0 + can_adjust = 0 \ No newline at end of file diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index c5557aed119..da4ce9a3e0c 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -244,6 +244,13 @@ item_state = "white_suit" item_color = "white_suit" +/obj/item/clothing/under/burial + name = "burial garments" + desc = "Traditional burial garments from the early 22nd century." + icon_state = "burial" + item_state = "burial" + item_color = "burial" + /obj/item/clothing/under/blackskirt name = "black skirt" desc = "A black skirt, very fancy!" diff --git a/code/modules/food&drinks/food/snacks.dm b/code/modules/food&drinks/food/snacks.dm index 7ba88bcd75a..2a790645521 100644 --- a/code/modules/food&drinks/food/snacks.dm +++ b/code/modules/food&drinks/food/snacks.dm @@ -44,6 +44,8 @@ /obj/item/weapon/reagent_containers/food/snacks/attack(mob/M, mob/user, def_zone) + if(user.a_intent == "harm") + return ..() if(!eatverb) eatverb = pick("bite","chew","nibble","gnaw","gobble","chomp") if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it. diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index 88f6b0d5af4..9996e4f5cf3 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -66,6 +66,9 @@ else if(M.ckey == ckey && M.stat == DEAD && !M.suiciding) make_podman = 1 + if(istype(M, /mob/living)) + var/mob/living/L = M + make_podman = !L.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 player_list) @@ -75,6 +78,9 @@ if(!O.can_reenter_corpse) break make_podman = 1 + if(istype(M, /mob/living)) + var/mob/living/L = M + make_podman = !L.hellbound ckey_holder = M.ckey break diff --git a/code/modules/library/lib_demonomicon.dm b/code/modules/library/lib_demonomicon.dm new file mode 100644 index 00000000000..88a10b0720b --- /dev/null +++ b/code/modules/library/lib_demonomicon.dm @@ -0,0 +1,56 @@ +/obj/item/weapon/book/codex_gigas + name = "Codex Gigas" + icon_state ="demonomicon" + throw_speed = 1 + throw_range = 10 + burn_state = LAVA_PROOF + author = "Forces beyond your comprehension" + unique = 1 + title = "The codex gigas" + var/inUse = 0 + + + + + +/obj/item/weapon/book/codex_gigas/attack_self(mob/user) + if(is_blind(user)) + return + if(ismonkey(user)) + user << "You skim through the book but can't comprehend any of it." + return + if(inUse) + user << "Someone else is reading it." + if(ishuman(user)) + var/mob/living/carbon/human/U = user + if(U.check_acedia()) + user << "None of this matters, why are you reading this? You put the [title] down." + return + inUse = 1 + var/devilName = copytext(sanitize(input(user, "What infernal being do you wish to research?", "Codex Gigas", null) as text),1,MAX_MESSAGE_LEN) + var/speed = 300 + var/correctness = 85 + var/willpower = 80 + if(U.job in list("Librarian")) // the librarian is both faster, and more accurate than normal crew members at research + speed = 45 + correctness = 100 + willpower = 95 + if(U.job in list("Captain", "Security Officer", "Head of Security", "Detective", "Warden")) + willpower = 90 + if(U.job in list("Clown")) // WHO GAVE THE CLOWN A DEMONOMICON? BAD THINGS WILL HAPPEN! + willpower = 25 + correctness -= U.getBrainLoss() *0.5 //Brain damage makes researching hard. + speed += U.getBrainLoss() * 3 + user.visible_message("[user] opens [title] and begins reading intently.") + if(do_after(U, speed, 0, U)) + var/usedName = devilName + if(!prob(correctness)) + usedName += "x" + var/datum/devilinfo/devil = devilInfo(usedName, 0) + user << browse("Information on [devilName]


[lawlorify[LORE][devil.ban]]
[lawlorify[LORE][devil.bane]]
[lawlorify[LORE][devil.obligation]]
[lawlorify[LORE][devil.banish]]", "window=book[window_size != null ? ";size=[window_size]" : ""]") + inUse = 0 + sleep(10) + if(!prob(willpower)) + U.influenceSin() + onclose(user, "book") + diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 34d64e5dc01..761355fd6e6 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -136,6 +136,7 @@ /mob/living/carbon/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0) . = ..() + var/damage = intensity - check_eye_prot() if(.) // we've been flashed if(visual) @@ -169,10 +170,15 @@ src << "You can't see anything!" else src << "Your eyes are really starting to hurt. This can't be good for you!" + if(has_bane(BANE_LIGHT)) + mind.disrupt_spells(-500) return 1 else if(damage == 0) // just enough protection if(prob(20)) src << "Something bright flashes in the corner of your vision!" + if(has_bane(BANE_LIGHT)) + mind.disrupt_spells(0) + //Throwing stuff /mob/living/carbon/proc/toggle_throw_mode() diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 3b8bb513a9e..393e7e9f2e5 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -31,7 +31,10 @@ if(ticker && ticker.mode) sql_report_death(src) ticker.mode.check_win() //Calls the rounds wincheck, mainly for wizard, malf, and changeling now - return ..(gibbed) + . = ..(gibbed) + if(mind && mind.devilinfo) + spawn(0) + mind.devilinfo.beginResurrectionCheck(src) /mob/living/carbon/human/proc/makeSkeleton() status_flags |= DISFIGURED diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 68c786f3d10..df0e5344f19 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -174,6 +174,8 @@ if(getorgan(/obj/item/organ/brain))//Only perform these checks if there is no brain if(suiciding) msg += "[t_He] appears to have commited suicide... there is no hope of recovery.\n" + if(hellbound) + msg += "[t_his] soul seems to have been ripped out of [t_his] body. Revival is impossible.\n" msg += "[t_He] [t_is] limp and unresponsive; there are no signs of life" if(!key) var/foundghost = 0 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9ae245d91b8..d3818e71d5a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -990,3 +990,41 @@ if(HM.quality != POSITIVE) dna.remove_mutation(HM.name) ..() + +/mob/living/carbon/human/proc/influenceSin() + var/datum/objective/sintouched/O + switch(rand(1,7))//traditional seven deadly sins... except lust. + if(1) // acedia + log_game("[src] was influenced by the sin of Acedia.") + O = new /datum/objective/sintouched/acedia + if(2) // Gluttony + log_game("[src] was influenced by the sin of gluttony.") + O = new /datum/objective/sintouched/gluttony + if(3) // Greed + log_game("[src] was influenced by the sin of greed.") + O = new /datum/objective/sintouched/greed + if(4) // sloth + log_game("[src] was influenced by the sin of sloth.") + O = new /datum/objective/sintouched/sloth + if(5) // Wrath + log_game("[src] was influenced by the sin of wrath.") + O = new /datum/objective/sintouched/wrath + if(6) // Envy + log_game("[src] was influenced by the sin of envy.") + O = new /datum/objective/sintouched/envy + if(7) // Pride + log_game("[src] was influenced by the sin of pride.") + O = new /datum/objective/sintouched/pride + ticker.mode.sintouched += src.mind + src.mind.objectives += O + var/obj_count = 1 + src << "Your current objectives:" + for(O in src.mind.objectives) + var/datum/objective/objective = O + src << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ + +/mob/living/carbon/human/check_weakness(obj/item/weapon, mob/living/attacker) + . = ..() + if (dna && dna.species) + . += dna.species.check_weakness(weapon, attacker) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index a9bfdce73cb..c38e28567ac 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -679,6 +679,9 @@ /datum/species/proc/get_spans() return list() +/datum/species/proc/check_weakness(obj/item/weapon, mob/living/attacker) + return 0 + //////// //LIFE// //////// @@ -1023,7 +1026,8 @@ armor_block = min(90,armor_block) //cap damage reduction at 90% var/Iforce = I.force //to avoid runtimes on the forcesay checks at the bottom. Some items might delete themselves if you drop them. (stunning yourself, ninja swords) - apply_damage(I.force, I.damtype, def_zone, armor_block, H) + var/weakness = H.check_weakness(I, user) + apply_damage(I.force * weakness, I.damtype, def_zone, armor_block, H) H.send_item_attack_message(I, user, hit_area) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 77c3a6c6d0d..4084b11b26e 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -212,7 +212,7 @@ return internal.remove_air_volume(volume_needed) /mob/living/carbon/proc/handle_changeling() - if(mind && hud_used) + if(mind && hud_used && hud_used.lingchemdisplay) if(mind.changeling) mind.changeling.regenerate(src) hud_used.lingchemdisplay.invisibility = 0 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 06f6492e9ae..aff9f035297 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -505,7 +505,7 @@ Sorry Giacom. Please don't be mad :( ear_deaf = 0 ear_damage = 0 hallucination = 0 - heal_overall_damage(1000, 1000) + heal_overall_damage(100000, 100000) ExtinguishMob() fire_stacks = 0 updatehealth() @@ -610,7 +610,7 @@ Sorry Giacom. Please don't be mad :( /mob/living/movement_delay() . = ..() - if(istype(loc, /turf/open)) + if(isturf(loc, /turf/open)) var/turf/open/T = loc . += T.slowdown switch(m_intent) @@ -995,3 +995,29 @@ Sorry Giacom. Please don't be mad :( /mob/proc/update_sight() return + +/mob/living/proc/owns_soul() + if(mind) + return mind.soulOwner == mind + return 1 + +/mob/living/proc/return_soul() + if(mind) + mind.soulOwner = mind + +/mob/living/proc/has_bane(banetype) + if(mind) + if(mind.devilinfo) + return mind.devilinfo.bane == banetype + return 0 + +/mob/living/proc/check_weakness(obj/item/weapon, mob/living/attacker) + if(mind && mind.devilinfo) + return check_devil_bane_multiplier(weapon, attacker) + return 1 + +/mob/living/proc/check_acedia() + if(src.mind && src.mind.objectives) + for(var/datum/objective/sintouched/acedia/A in src.mind.objectives) + return 1 + return 0 diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 2406a5ba0ed..dab7e893b8a 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -59,3 +59,5 @@ var/unique_name = 0 //if a mob's name should be appended with an id when created e.g. Mob (666) var/list/butcher_results = null + var/hellbound = 0 //People who've signed infernal contracts are unrevivable. + diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 0ce588cdd87..e32fca72536 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -224,6 +224,7 @@ Auto Patrol: []"}, C.Weaken(5) C.stuttering = 5 C.Stun(5) + threat = C.assess_threat() add_logs(src,C,"stunned") if(declare_arrests) var/area/location = get_area(src) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 78a44680a2a..e4de12e8ac3 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -762,11 +762,7 @@ var/next_mob_id = 0 /mob/proc/get_ghost(even_if_they_cant_reenter = 0) if(mind) - for(var/mob/dead/observer/G in dead_mob_list) - if(G.mind == mind) - if(G.can_reenter_corpse || even_if_they_cant_reenter) - return G - break + return mind.get_ghost(even_if_they_cant_reenter) /mob/proc/notify_ghost_cloning(var/message = "Someone is trying to revive you. Re-enter your corpse if you want to be revived!", var/sound = 'sound/effects/genetics.ogg', var/atom/source = null) var/mob/dead/observer/ghost = get_ghost() diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 1971867a5ae..2861e2e41aa 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -320,6 +320,7 @@ data_core.manifest_inject(character) ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn AnnounceArrival(character, rank) + AddEmploymentContract(character) else character.Robotize() @@ -342,6 +343,15 @@ var/obj/machinery/announcement_system/announcer = pick(announcement_systems) announcer.announce("ARRIVAL", character.real_name, rank, list()) //make the list empty to make it announce it in common +/mob/new_player/proc/AddEmploymentContract(mob/living/carbon/human/employee) + //TODO: figure out a way to exclude wizards/nukeops/demons from this. + sleep(30) + for(var/C in employmentCabinets) + var/obj/structure/filingcabinet/employment/employmentCabinet = C + if(!employmentCabinet.virgin) + employmentCabinet.addFile(employee) + + /mob/new_player/proc/LateChoices() var/mills = world.time // 1/10 of a second, not real milliseconds but whatever //var/secs = ((mills % 36000) % 600) / 10 //Not really needed, but I'll leave it here for refrence.. or something diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index fca202896d1..b285351259b 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -53,6 +53,8 @@ if(suiciding) O.suiciding = suiciding + if(hellbound) + O.hellbound = hellbound O.loc = loc O.a_intent = "harm" @@ -170,6 +172,8 @@ if(suiciding) O.suiciding = suiciding + if(hellbound) + O.hellbound = hellbound O.loc = loc diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm new file mode 100644 index 00000000000..7f67ef9e3d3 --- /dev/null +++ b/code/modules/paperwork/contract.dm @@ -0,0 +1,265 @@ +/* For employment contracts and infernal contracts */ + +/obj/item/weapon/paper/contract + throw_range = 3 + throw_speed = 3 + var/signed = 0 + var/datum/mind/target + flags = NOBLUDGEON + +/obj/item/weapon/paper/contract/proc/update_text() + return + +/obj/item/weapon/paper/contract/update_icon() + return + + +/obj/item/weapon/paper/contract/employment + icon_state = "paper_words" + +/obj/item/weapon/paper/contract/employment/New(atom/loc, mob/living/nOwner) + . = ..() + if(!nOwner || !nOwner.mind) + qdel(src) + return -1 + target = nOwner.mind + update_text(nOwner) + + +/obj/item/weapon/paper/contract/employment/update_text() + name = "paper- [target] employment contract" + info = "

Conditions of Employment




This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and Nanotrasen (hereafter referred to as the omnipresent and helpful watcher of humanity).
WITNESSETH:
WHEREAS, SLAVE is a natural born human or humanoid, posessing skills upon which he can aid the omnipresent and helpful watcher of humanity, who seeks employment in the omnipresent and helpful watcher of humanity.
WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanant servitude.
NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows:
In exchange for paltry payments, SLAVE agrees to work for the omnipresent and helpful watcher of humanity, for the remainder of his or her current and future lives.
Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity.
Should transfership of a soul not be possible, a lien shall be placed instead.
Signed,
[target]" + + +/obj/item/weapon/paper/contract/employment/attack(mob/living/M, mob/living/carbon/human/user) + var/deconvert = 0 + if(M.mind == target && target.soulOwner != target) + if(user.mind && (user.mind.assigned_role == "Lawyer")) + deconvert = prob (25) + else if (user.mind && (user.mind.assigned_role =="Head of Personnel") || (user.mind.assigned_role == "Centcom Commander")) + deconvert = prob (10) // the HoP doesn't have AS much legal training + if(deconvert) + M.visible_message("[user] reminds [M] that [M]'s soul was already purchased by Nanotrasen!") + M << "You feel that your soul has returned to it's rightful owner, Nanotrasen." + M.return_soul() + else + if(ishuman(M)) + var/mob/living/carbon/human/N = M + if(!istype(N.head, /obj/item/clothing/head/helmet)) + N.adjustBrainLoss(10) + N << "You feel dumber." + M.visible_message("[user] beats [M] over the head with [src]!", \ + "[user] beats [M] over the head with [src]!") + return ..() + + +/obj/item/weapon/paper/contract/infernal + var/contractType = 0 + burn_state = LAVA_PROOF + var/datum/mind/owner + icon_state = "paper_onfire" + +/obj/item/weapon/paper/contract/infernal/power + name = "paper- contract for infernal power" + contractType = CONTRACT_POWER + +/obj/item/weapon/paper/contract/infernal/wealth + name = "paper- contract for unlimited wealth" + contractType = CONTRACT_WEALTH + +/obj/item/weapon/paper/contract/infernal/prestige + name = "paper- contract for prestige" + contractType = CONTRACT_PRESTIGE + +/obj/item/weapon/paper/contract/infernal/magic + name = "paper- contract for magical power" + contractType = CONTRACT_MAGIC + +/obj/item/weapon/paper/contract/infernal/revive + name = "paper- contract of resurrection" + contractType = CONTRACT_REVIVE + +/obj/item/weapon/paper/contract/infernal/knowledge + name = "paper- contract for knowledge" + contractType = CONTRACT_KNOWLEDGE + +/obj/item/weapon/paper/contract/infernal/unwilling + name = "paper- infernal contract" + contractType = CONTRACT_UNWILLING + +/obj/item/weapon/paper/contract/infernal/New(atom/loc, mob/living/nTarget, datum/mind/nOwner) + ..() + owner = nOwner + target = nTarget + update_text() + +/obj/item/weapon/paper/contract/infernal/ + +/obj/item/weapon/paper/contract/infernal/suicide_act(mob/user) + if(signed && (user == target.current) && istype(user,/mob/living/carbon/human/)) + var/mob/living/carbon/human/H = user + H.forcesay("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!") + H.visible_message("[H] holds up a contract claiming his soul, then immediately catches fire. It looks like \he's trying to commit suicide!") + H.adjust_fire_stacks(20) + H.IgniteMob() + return(FIRELOSS) + else + ..() + +/obj/item/weapon/paper/contract/infernal/update_text() + info = "This shouldn't be seen. Error DEVIL:5" + +/obj/item/weapon/paper/contract/infernal/power/update_text(var/signature = "____________") + 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 [owner.devilinfo.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, [signature]" + +/obj/item/weapon/paper/contract/infernal/wealth/update_text(var/signature = "____________") + 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 [owner.devilinfo.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, [signature]" + +/obj/item/weapon/paper/contract/infernal/prestige/update_text(var/signature = "____________") + 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 [owner.devilinfo.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, [signature]" + +/obj/item/weapon/paper/contract/infernal/magic/update_text(var/signature = "____________") + 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 [owner.devilinfo.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, [signature]" + +/obj/item/weapon/paper/contract/infernal/revive/update_text(var/signature = "____________") + 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 [owner.devilinfo.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, [signature]" + +/obj/item/weapon/paper/contract/infernal/knowledge/update_text(var/signature = "____________") + 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 [owner.devilinfo.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, [signature]" + +/obj/item/weapon/paper/contract/infernal/unwilling/update_text(var/signature = "____________") + info = "
Contract for slave



I, [target], hereby offer my soul to the infernal hells by way of the infernal agent [owner.devilinfo.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, [signature]" + +/obj/item/weapon/paper/contract/infernal/attackby(obj/item/weapon/P, mob/living/carbon/human/user, params) + add_fingerprint(user) + if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) + attempt_signature(user) + else if(istype(P, /obj/item/weapon/stamp)) + user << "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("[user] brings [P] next to [src], but [src] does not catch fire!", "The [src] refuses to ignite!") + else + return ..() + +/obj/item/weapon/paper/contract/infernal/attack(mob/M, mob/living/user) + add_fingerprint(user) + if(M == user && target == M.mind && M.mind.soulOwner == M.mind && attempt_signature(user)) + user.visible_message("[user] slices their wrist with [src], and scrawls their name in blood.", "You slice your wrist open and scrawl your name in blood.") + if(istype(user, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + H.vessel.remove_reagent("blood",10) + else + return ..() + +/obj/item/weapon/paper/contract/infernal/proc/attempt_signature(mob/living/carbon/human/user) + if(user.IsAdvancedToolUser()) + if(user.mind == target) + if(user.mind.soulOwner == user.mind) + if (contractType == CONTRACT_REVIVE) + user << "You are already alive, this contract would do nothing." + else + user << "You quickly scrawl your name on the contract" + if(FulfillContract()<=0) + user << "But it seemed to have no effect, perhaps even Hell itself cannot grant this boon?" + return 1 + else + user << "You are not in possession of your soul, you may not sell it." + else + user << "Your signature simply slides off of the sheet, it seems this contract is not meant for you to sign." + else + user << "You don't know how to read or write." + return 0 + + + +/obj/item/weapon/paper/contract/infernal/revive/attack(mob/M, mob/living/user) + if (target == M.mind && M.stat == DEAD && M.mind.soulOwner == M.mind) + 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) + add_logs(user, H, "infernally revived via contract") + user.visible_message("With a sudden blaze, [H] stands back up.") + H.adjust_fire_stacks(20) + H.IgniteMob() + FulfillContract(H) + sleep(5) + H.ExtinguishMob() + H.adjustFireLoss(0) + else + ..() + + +/obj/item/weapon/paper/contract/infernal/proc/FulfillContract(mob/living/carbon/human/user = target.current) + signed = 1 + user.mind.soulOwner = owner + user.hellbound = contractType + user.mind.damnation_type = contractType + owner.devilinfo.add_soul(user.mind) + update_text(user.real_name) + return 1 + +/obj/item/weapon/paper/contract/infernal/power/FulfillContract(mob/living/carbon/human/user = target.current) + if(!user.dna) + return -1 + user.dna.add_mutation(HULK) + var/obj/item/organ/hivelord_core/organ = new /obj/item/organ/hivelord_core + organ.Insert(user) + return ..() + +/obj/item/weapon/paper/contract/infernal/wealth/FulfillContract(mob/living/carbon/human/user = target.current) + if(!istype(user) || !user.mind) // How in the hell could that happen? + return -1 + user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_wealth(null)) + return ..() + +/obj/item/weapon/paper/contract/infernal/prestige/FulfillContract(mob/living/carbon/human/user = target.current) + var/obj/item/worn = user.wear_id + var/obj/item/weapon/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.update_label() + else + id = new /obj/item/weapon/card/id/gold(user.loc) + id.registered_name = user.real_name + id.access = get_all_accesses()+get_all_centcom_access() + id.assignment = "Captain" + id.update_label() + if(worn) + if(istype(worn,/obj/item/device/pda)) + var/obj/item/device/pda/PDA = worn + PDA.id = id + id.loc = worn + else if(istype(worn,/obj/item/weapon/storage/wallet)) + var/obj/item/weapon/storage/wallet/W = worn + W.front_id = id + id.loc = worn + worn.update_icon() + new /datum/round_event/ion_storm(0, -1, "[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/weapon/paper/contract/infernal/magic/FulfillContract(mob/living/carbon/human/user = target.current) + if(!istype(user) || !user.mind) + return -1 + user.mind.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball(null)) + user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock(null)) + return ..() + +/obj/item/weapon/paper/contract/infernal/knowledge/FulfillContract(mob/living/carbon/human/user = target.current) + if(!istype(user) || !user.mind) + return -1 + user.dna.add_mutation(XRAY) + user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/view_range(null)) + return ..() diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 3812b42a551..2a35bfff8ff 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -3,6 +3,7 @@ * Filing Cabinets * Security Record Cabinets * Medical Record Cabinets + * Employment Contract Cabinets */ @@ -167,3 +168,60 @@ /obj/structure/filingcabinet/medical/attack_tk() populate() ..() + +/* + * Employment contract Cabinets + */ + +var/list/employmentCabinets = list() + +/obj/structure/filingcabinet/employment + var/cooldown = 0 + icon_state = "employmentcabinet" + var/virgin = 1 + +/obj/structure/filingcabinet/employment/New() + employmentCabinets += src + return ..() + +/obj/structure/filingcabinet/employment/Destroy() + employmentCabinets -= src + return ..() + +/obj/structure/filingcabinet/employment/proc/fillCurrent() + //This proc fills the cabinet with the current crew. + for(var/record in data_core.locked) + var/datum/data/record/G = record + if(!G) + continue + if(G.fields["reference"]) + addFile(G.fields["reference"]) + + +/obj/structure/filingcabinet/employment/proc/addFile(mob/living/carbon/human/employee) + new /obj/item/weapon/paper/contract/employment(src, employee) + +/obj/structure/filingcabinet/employment/attack_hand(mob/user) + if(!cooldown) + if(virgin) + fillCurrent() + virgin = 0 + cooldown = 1 + ..() + sleep(100) // prevents the devil from just instantly emptying the cabinet, ensuring an easy win. + cooldown = 0 + else + user << "The [src] is jammed, give it a few seconds." + + + + +/obj/structure/filingcabinet/employment/attackby(obj/item/P, mob/user, params) + if(istype(P, /obj/item/weapon/wrench)) + user << "You begin to [anchored ? "wrench" : "unwrench"] [src]." + if (do_after(user,300,user)) + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + anchored = !anchored + user << "You successfully [anchored ? "wrench" : "unwrench"] [src]." + else + return ..() diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 8247ce2ee37..1280fdb3d8c 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -64,21 +64,28 @@ if(copy) for(var/i = 0, i < copies, i++) if(toner > 0 && !busy && copy) - var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc) - if(length(copy.info) > 0) //Only print and add content if the copied doc has words on it - if(toner > 10) //lots of toner, make it dark - c.info = "" - else //no toner? shitty copies for you! - c.info = "" - var/copied = copy.info - copied = replacetext(copied, "" - c.name = copy.name - c.fields = copy.fields - c.updateinfolinks() - toner-- + var/copy_as_paper = 1 + if(istype(copy, /obj/item/weapon/paper/contract/employment)) + var/obj/item/weapon/paper/contract/employment/E = copy + var/obj/item/weapon/paper/contract/employment/C = new /obj/item/weapon/paper/contract/employment (loc, E.target) + if(C) + copy_as_paper = 0 + if(copy_as_paper) + var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc) + if(length(copy.info) > 0) //Only print and add content if the copied doc has words on it + if(toner > 10) //lots of toner, make it dark + c.info = "" + else //no toner? shitty copies for you! + c.info = "" + var/copied = copy.info + copied = replacetext(copied, "" + c.name = copy.name + c.fields = copy.fields + c.updateinfolinks() + toner-- busy = 1 sleep(15) busy = 0 @@ -233,18 +240,22 @@ updateUsrDialog() /obj/machinery/photocopier/proc/do_insertion(obj/item/O, mob/user) - O.loc = src - user << "You insert [O] into [src]." - flick("photocopier1", src) - updateUsrDialog() + O.loc = src + user << "You insert [O] into [src]." + flick("photocopier1", src) + updateUsrDialog() /obj/machinery/photocopier/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/weapon/paper)) if(copier_empty()) - if(!user.drop_item()) - return - copy = O - do_insertion(O) + if(istype(O,/obj/item/weapon/paper/contract/infernal)) + user << "The [src] smokes, smelling of brimstone!" + burn_state = ON_FIRE + else + if(!user.drop_item()) + return + copy = O + do_insertion(O) else user << "There is already something in [src]!" diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index a7499d447a3..345ddad0d85 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -54,6 +54,8 @@ /obj/item/projectile/magic/resurrection/on_hit(mob/living/carbon/target) . = ..() + if(target.hellbound) + return if(ismob(target)) if(target.revive(full_heal = 1)) if(!target.ckey) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index bca21857b2d..4952b70f4b2 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -239,6 +239,12 @@ reagent_state = SOLID color = "#FFFFFF" // rgb: 255,255,255 +/datum/reagent/consumable/sodiumchloride/reaction_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with welding fuel to make them easy to ignite! + if(!istype(M)) + return + if(M.has_bane(BANE_SALT)) + M.mind.disrupt_spells(-200) + /datum/reagent/consumable/blackpepper name = "Black Pepper" id = "blackpepper" diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index a12a1d56bfe..eb79d94d144 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -728,7 +728,7 @@ M.visible_message("[M]'s body convulses a bit, and then falls still once more.") return M.visible_message("[M]'s body convulses a bit.") - if(!M.suiciding && !(M.disabilities & NOCLONE)) + if(!M.suiciding && !(M.disabilities & NOCLONE) && !M.hellbound) if(!M) return if(M.notify_ghost_cloning(source = M)) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index a851f1e95e0..d843c966b6a 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -615,8 +615,17 @@ id = "iron" description = "Pure iron is a metal." reagent_state = SOLID + color = "#C8A5DC" // rgb: 200, 165, 220 +/datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume) + if(!istype(M, /mob/living)) + return + 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("toxin", reac_volume) + ..() + /datum/reagent/gold name = "Gold" id = "gold" @@ -631,6 +640,13 @@ reagent_state = SOLID color = "#D0D0D0" // rgb: 208, 208, 208 +/datum/reagent/silver/reaction_mob(mob/living/M, method=TOUCH, reac_volume) + if(!istype(M, /mob/living)) + return + if(M.has_bane(BANE_SILVER)) + M.reagents.add_reagent("toxin", reac_volume) + ..() + /datum/reagent/uranium name ="Uranium" id = "uranium" diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 1a599a99bc9..77f656ab024 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -38,7 +38,8 @@ return /obj/item/weapon/reagent_containers/attack(mob/M, mob/user, def_zone) - return + if(user.a_intent == "harm") + return ..() /obj/item/weapon/reagent_containers/afterattack(obj/target, mob/user , flag) return diff --git a/code/modules/spells/spell_types/demon.dm b/code/modules/spells/spell_types/demon.dm new file mode 100644 index 00000000000..ae32cf92292 --- /dev/null +++ b/code/modules/spells/spell_types/demon.dm @@ -0,0 +1,167 @@ +/obj/effect/proc_holder/spell/targeted/summon_pitchfork + name = "Summon Pitchfork" + desc = "A devil's weapon of choice. Use this to summon/unsummon your pitchfork." + invocation_type = "none" + include_user = 1 + range = -1 + clothes_req = 0 + var/obj/item/weapon/twohanded/pitchfork/demonic/pitchfork + var/pitchfork_type = /obj/item/weapon/twohanded/pitchfork/demonic/ + + school = "conjuration" + charge_max = 150 + cooldown_min = 10 + action_icon_state = "pitchfork" + action_background_icon_state = "bg_demon" + + + +/obj/effect/proc_holder/spell/targeted/summon_pitchfork/cast(list/targets, mob/user = usr) + if (pitchfork) + qdel(pitchfork) + else + for(var/mob/living/carbon/C in targets) + if(C.drop_item()) + pitchfork = new pitchfork_type + C.put_in_hands(pitchfork) + +/obj/effect/proc_holder/spell/targeted/summon_pitchfork/Del() + if(pitchfork) + qdel(pitchfork) + +/obj/effect/proc_holder/spell/targeted/summon_pitchfork/greater + pitchfork_type = /obj/item/weapon/twohanded/pitchfork/demonic/greater + +/obj/effect/proc_holder/spell/targeted/summon_pitchfork/ascended + pitchfork_type = /obj/item/weapon/twohanded/pitchfork/demonic/ascended + + +/obj/effect/proc_holder/spell/targeted/summon_contract + name = "Summon infernal contract" + desc = "Skip making a contract by hand, just do it by magic." + invocation_type = "whisper" + invocation = "Just sign on the dotted line." + include_user = 0 + range = 5 + clothes_req = 0 + + school = "conjuration" + charge_max = 150 + cooldown_min = 10 + action_icon_state = "spell_default" + action_background_icon_state = "bg_demon" + +/obj/effect/proc_holder/spell/targeted/summon_contract/cast(list/targets, mob/user = usr) + for(var/mob/living/carbon/C in targets) + if(C.mind && user.mind) + if(C.stat == DEAD) + if(user.drop_item()) + var/obj/item/weapon/paper/contract/infernal/revive/contract = new(user.loc, C.mind, user.mind) + user.put_in_hands(contract) + else + var/obj/item/weapon/paper/contract/infernal/contract // = new(user.loc, C.mind, contractType, user.mind) + var/contractTypeName = input(user, "What type of contract?") in list ("Power", "Wealth", "Prestige", "Magic", "Knowledge") + switch(contractTypeName) + if("Power") + contract = new /obj/item/weapon/paper/contract/infernal/power(C.loc, C.mind, user.mind) + if("Wealth") + contract = new /obj/item/weapon/paper/contract/infernal/wealth(C.loc, C.mind, user.mind) + if("Prestige") + contract = new /obj/item/weapon/paper/contract/infernal/prestige(C.loc, C.mind, user.mind) + if("Magic") + contract = new /obj/item/weapon/paper/contract/infernal/magic(C.loc, C.mind, user.mind) + if("Knowledge") + contract = new /obj/item/weapon/paper/contract/infernal/knowledge(C.loc, C.mind, user.mind) + C.put_in_hands(contract) + else + user << "[C] seems to not be sentient. You cannot summon a contract for them." + + +/obj/effect/proc_holder/spell/dumbfire/fireball/hellish + name = "Hellfire" + desc = "This spell launches hellfire at the target." + + school = "evocation" + charge_max = 30 + clothes_req = 0 + invocation = "Your very soul will catch fire!" + invocation_type = "shout" + range = 2 + + proj_icon_state = "fireball" + proj_name = "a fireball" + proj_type = /obj/effect/proc_holder/spell/turf/fireball/infernal + + proj_lifespan = 200 + proj_step_delay = 1 + + action_background_icon_state = "bg_demon" + +/obj/effect/proc_holder/spell/turf/fireball/infernal/cast(turf/T,mob/user = usr) + explosion(T, -1, -1, 1, 4, 0, flame_range = 5) + +/obj/effect/proc_holder/spell/targeted/infernal_jaunt + name = "Infernal Jaunt" + desc = "Use pools of blood to phase out of existence." + charge_max = 10 + clothes_req = 0 + selection_type = "range" + range = -1 + cooldown_min = 0 + overlay = null + include_user = 1 + action_icon_state = "jaunt" + action_background_icon_state = "bg_demon" + phase_allowed = 1 + +/obj/effect/proc_holder/spell/targeted/infernal_jaunt/cast(list/targets, mob/living/user = usr) + if(istype(user)) + if(istype(user.loc, /obj/effect/dummy/slaughter/)) + var/continuing = 0 + for(var/mob/living/C in orange(2, get_turf(user.loc))) + if (C.mind && C.mind.soulOwner == C.mind) + continuing = 1 + break + if(continuing) + user.infernalphasein() + else + user << "You can only re-appear near a potential signer." + revert_cast() + return ..() + else + user.infernalphaseout() + start_recharge() + return + revert_cast() + + +/mob/living/proc/infernalphaseout() + var/turf/mobloc = get_turf(src.loc) + src.notransform = 1 + spawn(0) + src.visible_message("[src] disappears in a flashfire!") + playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1) + var/obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,mobloc) + src.ExtinguishMob() + if(buckled) + buckled.unbuckle_mob(src,force=1) + if(buckled_mobs.len) + unbuckle_all_mobs(force=1) + if(pulledby) + pulledby.stop_pulling() + if(pulling) + stop_pulling() + src.loc = holder + src.holder = holder + src.notransform = 0 + return 1 + +/mob/living/proc/infernalphasein() + if(src.notransform) + src << "You're too busy to jaunt in." + return 0 + src.loc = get_turf(src) + src.client.eye = src + src.visible_message("[src] appears in a firey blaze!") + playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) + return 1 diff --git a/code/modules/spells/spell_types/demon_boons.dm b/code/modules/spells/spell_types/demon_boons.dm new file mode 100644 index 00000000000..85ca441adef --- /dev/null +++ b/code/modules/spells/spell_types/demon_boons.dm @@ -0,0 +1,44 @@ +/obj/effect/proc_holder/spell/targeted/summon_wealth + name = "Summon wealth" + desc = "The reward for selling your soul." + invocation_type = "none" + include_user = 1 + range = -1 + clothes_req = 0 + school = "conjuration" + charge_max = 100 + cooldown_min = 10 + action_icon_state = "moneybag" + + +/obj/effect/proc_holder/spell/targeted/summon_wealth/cast(list/targets, mob/user = usr) + for(var/mob/living/carbon/C in targets) + if(user.drop_item()) + var/obj/item = pick( + new /obj/item/weapon/coin/gold(user.loc), + new /obj/item/weapon/coin/diamond(user.loc), + new /obj/item/weapon/coin/silver(user.loc), + new /obj/item/clothing/tie/medal/gold(user.loc), + new /obj/item/stack/sheet/mineral/gold(user.loc), + new /obj/item/stack/sheet/mineral/silver(user.loc), + new /obj/item/stack/sheet/mineral/diamond(user.loc), + new /obj/item/stack/spacecash/c1000(user.loc)) + C.put_in_hands(item) + +/obj/effect/proc_holder/spell/targeted/view_range + name = "Distant vision" + desc = "The reward for selling your soul." + invocation_type = "none" + include_user = 1 + range = -1 + clothes_req = 0 + charge_max = 50 + cooldown_min = 10 + action_icon_state = "camera_jump" + var/ranges = list(7,8,9,10/*,11,12*/) + +/obj/effect/proc_holder/spell/targeted/view_range/cast(list/targets, mob/user = usr) + for(var/mob/C in targets) + if(!C.client) + continue + C.client.view = input("Select view range:", "Range", 4) in ranges \ No newline at end of file diff --git a/code/modules/spells/spell_types/dumbfire.dm b/code/modules/spells/spell_types/dumbfire.dm index 38a42ccb037..ab711319e77 100644 --- a/code/modules/spells/spell_types/dumbfire.dm +++ b/code/modules/spells/spell_types/dumbfire.dm @@ -38,9 +38,11 @@ if(istext(proj_type)) var/projectile_type = text2path(proj_type) projectile = new projectile_type(user) - if(istype(proj_type,/obj/effect/proc_holder/spell)) + else if(istype(proj_type,/obj/effect/proc_holder/spell)) projectile = new /obj/effect/proc_holder/spell/targeted/trigger(user) projectile:linked_spells += proj_type + else + projectile = new proj_type(user) projectile.icon = proj_icon projectile.icon_state = proj_icon_state projectile.dir = get_dir(projectile, target) diff --git a/config/admins.txt b/config/admins.txt index b5d7d797fff..6c712096834 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -14,6 +14,7 @@ microscopics = Game Master Gun Hog = Game Master KorPhaeron = Game Master razharas = Game Master +Lordpidey = Game Master Niknakflak = Game Master rolan7 = Game Master quarxink = Game Master diff --git a/config/tips.txt b/config/tips.txt index c7f7241a456..afcbe8700b1 100644 --- a/config/tips.txt +++ b/config/tips.txt @@ -180,3 +180,6 @@ As a Morph, you can talk while disguised, but your words have a chance of being As a Drone, you can ping other drones to alert them of areas in the station in need of repair. As a Ghost, you can see the inside of a container on the ground by clicking on it. As a Ghost, you can double click on people, bots, or the singularity to follow them. +As a Devil, you gain power for every three souls you control, however you also become more obvious. +As a Devil, as long as you control at least one other soul, you will automatically resurrect, as long as a banishment ritual is not performed. +At which time a Devil's nameth is spake on the tongue of man, the Devil may appeareth. diff --git a/icons/mob/32x64.dmi b/icons/mob/32x64.dmi new file mode 100644 index 0000000000000000000000000000000000000000..32b25ba739343e7c109f6bd0377fd35e8fc23d48 GIT binary patch literal 3779 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 literal 11141 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 loZP?P`w diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index d39464c712c76e6a163cb72603d6b6da7fd1577f..0ff81ae8c86a9d99c35be65705d2f8820edccf81 100644 GIT binary patch delta 8160 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 ~C@Gppi{ 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 delta 22158 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 G-hTjgbs<9l diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index f24063257330c23dfb69c06861b1ea58390ced30..44382c1f48ebf0d353bd0820fc6f9ab3ad893955 100644 GIT binary patch literal 21256 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 aALcbH*ZOIf#V|qVL&%D1xA6*v!Tkjs09hdb diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 73016befbb0cdf38ed56a0f44b95cc87555af034..7280b7ccd607d6a909fc44659d74c0f0a12c4e6d 100644 GIT binary patch delta 12982 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 delta 12625 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

    -ywFV)YAAvr^*ZjJT}$F$H$eF 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 V7-B8t5Cj4Ll;t(#Dr7B!|35$&8TSAH diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index 4696fcf81b1c326e06b8203009eaea7ca4fc86ae..993db29c5ca592ae65f28addfe445c93a3eb0443 100644 GIT binary patch literal 23476 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 literal 22451 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 Ml(m#<6)eO43(8<_oB#j- diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index c3bb6eec0901dd47e5cd694ba3f3f523bdb073eb..df38b2e2f7c7de7a575abca20eec8592268c8cd0 100644 GIT binary patch delta 4826 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 Ah5!Hn delta 4538 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