Skip to content
This repository has been archived by the owner on Oct 15, 2023. It is now read-only.

Small buff on devils and progressing experiment #225

Merged
merged 2 commits into from
Aug 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions code/datums/spells/conjure_item.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
21 changes: 4 additions & 17 deletions code/datums/spells/devil.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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,"<span class='warning'>You are now phasing in.</span>")
if(do_mob(user,user,150))
user.infernalphasein()
else
to_chat(user,"<span class='warning'>You can only re-appear near a potential signer or on a shuttle.</span>")
revert_cast()
return ..()
to_chat(user,"<span class='warning'>You are now phasing in.</span>")
if(do_mob(user,user,100))
user.infernalphasein()
else
user.fakefire()
to_chat(user,"<span class='warning'>You begin to phase back into sinful flames.</span>")
if(do_mob(user,user,150))
if(do_mob(user,user,100))
user.notransform = TRUE
user.infernalphaseout()
else
Expand Down
6 changes: 6 additions & 0 deletions code/game/gamemodes/devil/devil_game_mode.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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)
Expand Down
60 changes: 36 additions & 24 deletions code/game/gamemodes/devil/devilinfo.dm
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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()
..()
Expand All @@ -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)
Expand Down Expand Up @@ -165,21 +178,20 @@ GLOBAL_LIST_INIT(lawlorify, list (
owner.current.set_nutrition(NUTRITION_LEVEL_FULL)
to_chat(owner.current, "<span class='warning'>You feel satiated as you received a new soul.</span>")
update_hud()
switch(SOULVALUE)
if(0)
to_chat(owner.current, "<span class='warning'>Your hellish powers have been restored.</span>")
give_base_spells()
if(BLOOD_THRESHOLD)
to_chat(owner.current, "<span class='warning'>You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.</span>")
sleep(50)
increase_blood_lizard()
if(TRUE_THRESHOLD)
to_chat(owner.current, "<span class='warning'>You feel as though your current form is about to shed. You will soon turn into a true devil.</span>")
sleep(50)
increase_true_devil()
if(ARCH_THRESHOLD)
arch_devil_prelude()
increase_arch_devil()
if(SOULVALUE == 0 )
to_chat(owner.current, "<span class='warning'>Your hellish powers have been restored.</span>")
give_base_spells()
if(SOULVALUE == blood_threshold )
to_chat(owner.current, "<span class='warning'>You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.</span>")
sleep(50)
increase_blood_lizard()
if(SOULVALUE == true_form_threshold)
to_chat(owner.current, "<span class='warning'>You feel as though your current form is about to shed. You will soon turn into a true devil.</span>")
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))
Expand All @@ -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()
Expand Down Expand Up @@ -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.</a>")
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))
Expand Down Expand Up @@ -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")
Expand All @@ -518,9 +530,9 @@ GLOBAL_LIST_INIT(lawlorify, list (
to_chat(owner, "<br/><br/><span class='warning'>Remember, the crew can research your weaknesses if they find out your devil name.</span><br>")


#undef BLOOD_THRESHOLD
/* #undef BLOOD_THRESHOLD
#undef TRUE_THRESHOLD
#undef ARCH_THRESHOLD
#undef ARCH_THRESHOLD */
#undef BASIC_DEVIL
#undef BLOOD_LIZARD
#undef TRUE_DEVIL
Expand Down
2 changes: 1 addition & 1 deletion code/modules/projectiles/projectile/magic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Loading