From c203b52ad8cfb1be94abf020ca516d28b452da44 Mon Sep 17 00:00:00 2001 From: Lentye <117032431+Lentye@users.noreply.github.com> Date: Thu, 3 Aug 2023 17:00:46 +0400 Subject: [PATCH] Small buff on devils and progressing experiment (#225) --- code/datums/spells/conjure_item.dm | 3 + code/datums/spells/devil.dm | 21 ++----- code/game/gamemodes/devil/devil_game_mode.dm | 6 ++ code/game/gamemodes/devil/devilinfo.dm | 60 ++++++++++++-------- code/modules/projectiles/projectile/magic.dm | 2 +- 5 files changed, 50 insertions(+), 42 deletions(-) diff --git a/code/datums/spells/conjure_item.dm b/code/datums/spells/conjure_item.dm index b14054ca6b7..626ee58a951 100644 --- a/code/datums/spells/conjure_item.dm +++ b/code/datums/spells/conjure_item.dm @@ -19,6 +19,9 @@ if(C.drop_from_active_hand()) item = new item_type C.put_in_hands(item) + else //для обхода бага от рефактора Цвея который он починил другим рефактором которого здесь нет + item = new item_type + C.put_in_hands(item) /obj/effect/proc_holder/spell/targeted/conjure_item/Destroy() QDEL_NULL(item) diff --git a/code/datums/spells/devil.dm b/code/datums/spells/devil.dm index 3db8323aa1d..0e5498954e2 100644 --- a/code/datums/spells/devil.dm +++ b/code/datums/spells/devil.dm @@ -102,26 +102,13 @@ /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 - if(istype(get_area(user), /area/shuttle)) // Can always phase in in a shuttle. - continuing = TRUE - else - for(var/mob/living/C in orange(2, get_turf(user.loc))) //Can also phase in when nearby a potential buyer. - if (C.mind && C.mind.soulOwner == C.mind) - continuing = TRUE - break - if(continuing) - to_chat(user,"You are now phasing in.") - if(do_mob(user,user,150)) - user.infernalphasein() - else - to_chat(user,"You can only re-appear near a potential signer or on a shuttle.") - revert_cast() - return ..() + to_chat(user,"You are now phasing in.") + if(do_mob(user,user,100)) + user.infernalphasein() else user.fakefire() to_chat(user,"You begin to phase back into sinful flames.") - if(do_mob(user,user,150)) + if(do_mob(user,user,100)) user.notransform = TRUE user.infernalphaseout() else diff --git a/code/game/gamemodes/devil/devil_game_mode.dm b/code/game/gamemodes/devil/devil_game_mode.dm index c50ee0149de..0ff93f048d2 100644 --- a/code/game/gamemodes/devil/devil_game_mode.dm +++ b/code/game/gamemodes/devil/devil_game_mode.dm @@ -12,6 +12,9 @@ var/num_modifier = 0 // Used for gamemodes, that are a child of traitor, that need more than the usual. var/objective_count = 2 var/minimum_devils = 1 + var/blood_threshold = 2 + var/true_form_threshold = 4 + var/arch_demon_threshold = 6 // var/devil_scale_coefficient = 10 /datum/game_mode/devil/announce() @@ -51,6 +54,9 @@ /datum/game_mode/devil/post_setup() + blood_threshold = round(num_players() / 10) + true_form_threshold = round(num_players() / 6) + arch_demon_threshold = round(num_players() / 4) for(var/datum/mind/devil in devils) spawn(rand(10, 100)) finalize_devil(devil, TRUE) diff --git a/code/game/gamemodes/devil/devilinfo.dm b/code/game/gamemodes/devil/devilinfo.dm index 22a5f4a6cde..c31d1b89b51 100644 --- a/code/game/gamemodes/devil/devilinfo.dm +++ b/code/game/gamemodes/devil/devilinfo.dm @@ -1,6 +1,7 @@ -#define BLOOD_THRESHOLD 3 //How many souls are needed per stage. +/* #define BLOOD_THRESHOLD 3 //How many souls are needed per stage. #define TRUE_THRESHOLD 7 #define ARCH_THRESHOLD 12 +disabled defines for progresssing by justpaper and mrachnuy ask*/ #define BASIC_DEVIL 0 #define BLOOD_LIZARD 1 @@ -96,6 +97,9 @@ GLOBAL_LIST_INIT(lawlorify, list ( /obj/effect/proc_holder/spell/targeted/conjure_item/violin, /obj/effect/proc_holder/spell/targeted/summon_dancefloor) var/ascendable = FALSE + var/blood_threshold = null + var/true_form_threshold = null + var/arch_demon_threshold = null /datum/devilinfo/New() ..() @@ -108,6 +112,15 @@ GLOBAL_LIST_INIT(lawlorify, list ( devil.obligation = randomdevilobligation() devil.ban = randomdevilban() devil.banish = randomdevilbanish() + var/datum/game_mode/devil/devil_mode + if(SSticker.mode == devil_mode) + devil.blood_threshold = devil_mode.blood_threshold + devil.true_form_threshold = devil_mode.true_form_threshold + devil.arch_demon_threshold = devil_mode.arch_demon_threshold + else + devil.blood_threshold = round(GLOB.player_list.len / 10) + devil.true_form_threshold = round(GLOB.player_list.len / 6) + devil.arch_demon_threshold = round(GLOB.player_list.len / 4) return devil /proc/devilInfo(name, saveDetails = 0) @@ -165,21 +178,20 @@ GLOBAL_LIST_INIT(lawlorify, list ( owner.current.set_nutrition(NUTRITION_LEVEL_FULL) to_chat(owner.current, "You feel satiated as you received a new soul.") update_hud() - switch(SOULVALUE) - if(0) - to_chat(owner.current, "Your hellish powers have been restored.") - give_base_spells() - if(BLOOD_THRESHOLD) - to_chat(owner.current, "You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.") - sleep(50) - increase_blood_lizard() - if(TRUE_THRESHOLD) - to_chat(owner.current, "You feel as though your current form is about to shed. You will soon turn into a true devil.") - sleep(50) - increase_true_devil() - if(ARCH_THRESHOLD) - arch_devil_prelude() - increase_arch_devil() + if(SOULVALUE == 0 ) + to_chat(owner.current, "Your hellish powers have been restored.") + give_base_spells() + if(SOULVALUE == blood_threshold ) + to_chat(owner.current, "You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.") + sleep(50) + increase_blood_lizard() + if(SOULVALUE == true_form_threshold) + to_chat(owner.current, "You feel as though your current form is about to shed. You will soon turn into a true devil.") + sleep(50) + increase_true_devil() + if(SOULVALUE == arch_demon_threshold) + arch_devil_prelude() + increase_arch_devil() /datum/devilinfo/proc/remove_soul(datum/mind/soul) if(soulsOwned.Remove(soul)) @@ -191,9 +203,9 @@ GLOBAL_LIST_INIT(lawlorify, list ( if(form == ARCH_DEVIL) return //arch devil can't regress //Yes, fallthrough behavior is intended, so I can't use a switch statement. - if(form == TRUE_DEVIL && SOULVALUE < TRUE_THRESHOLD) + if(form == TRUE_DEVIL && SOULVALUE < true_form_threshold) regress_blood_lizard() - if(form == BLOOD_LIZARD && SOULVALUE < BLOOD_THRESHOLD) + if(form == BLOOD_LIZARD && SOULVALUE < blood_threshold) regress_humanoid() if(SOULVALUE < 0) remove_spells() @@ -428,7 +440,7 @@ GLOBAL_LIST_INIT(lawlorify, list ( /datum/devilinfo/proc/hellish_resurrection(mob/living/body) message_admins("[owner.name] (true name is: [truename]) is resurrecting using hellish energy.") - if(SOULVALUE <= ARCH_THRESHOLD && ascendable) // once ascended, arch devils do not go down in power by any means. + if(SOULVALUE <= arch_demon_threshold && ascendable) // once ascended, arch devils do not go down in power by any means. reviveNumber += LOSS_PER_DEATH update_hud() if(!QDELETED(body)) @@ -489,11 +501,11 @@ GLOBAL_LIST_INIT(lawlorify, list ( H.equipOutfit(/datum/outfit/devil_lawyer) give_base_spells(TRUE) - if(SOULVALUE >= BLOOD_THRESHOLD) + if(SOULVALUE >= blood_threshold) increase_blood_lizard() - if(SOULVALUE >= TRUE_THRESHOLD) //Yes, BOTH this and the above if statement are to run if soulpower is high enough. + if(SOULVALUE >= true_form_threshold) //Yes, BOTH this and the above if statement are to run if soulpower is high enough. increase_true_devil() - if(SOULVALUE >= ARCH_THRESHOLD && ascendable) + if(SOULVALUE >= arch_demon_threshold && ascendable) increase_arch_devil() else throw EXCEPTION("Unable to find a blobstart landmark for hellish resurrection") @@ -518,9 +530,9 @@ GLOBAL_LIST_INIT(lawlorify, list ( to_chat(owner, "

Remember, the crew can research your weaknesses if they find out your devil name.
") -#undef BLOOD_THRESHOLD +/* #undef BLOOD_THRESHOLD #undef TRUE_THRESHOLD -#undef ARCH_THRESHOLD +#undef ARCH_THRESHOLD */ #undef BASIC_DEVIL #undef BLOOD_LIZARD #undef TRUE_DEVIL diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index cbca6ea79a5..5cf07d9e0c0 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -67,7 +67,7 @@ /obj/item/projectile/magic/fireball/infernal name = "infernal fireball" exp_heavy = -1 - exp_light = -1 + exp_light = 3 exp_flash = 4 exp_fire= 5