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