mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 16:18:01 +01:00
* 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.
112 lines
3.8 KiB
Plaintext
112 lines
3.8 KiB
Plaintext
/obj/item/weapon/reagent_containers
|
|
name = "Container"
|
|
desc = "..."
|
|
icon = 'icons/obj/chemical.dmi'
|
|
icon_state = null
|
|
w_class = 1
|
|
var/amount_per_transfer_from_this = 5
|
|
var/list/possible_transfer_amounts = list(5,10,15,20,25,30)
|
|
var/volume = 30
|
|
var/list/list_reagents = null
|
|
var/spawned_disease = null
|
|
var/disease_amount = 20
|
|
var/spillable = 0
|
|
|
|
/obj/item/weapon/reagent_containers/New(location, vol = 0)
|
|
..()
|
|
if (isnum(vol) && vol > 0)
|
|
volume = vol
|
|
create_reagents(volume)
|
|
if(spawned_disease)
|
|
var/datum/disease/F = new spawned_disease(0)
|
|
var/list/data = list("viruses"= list(F))
|
|
reagents.add_reagent("blood", disease_amount, data)
|
|
if(list_reagents)
|
|
reagents.add_reagent_list(list_reagents)
|
|
|
|
/obj/item/weapon/reagent_containers/attack_self(mob/user)
|
|
if(possible_transfer_amounts.len)
|
|
var/i=0
|
|
for(var/A in possible_transfer_amounts)
|
|
i++
|
|
if(A == amount_per_transfer_from_this)
|
|
if(i<possible_transfer_amounts.len)
|
|
amount_per_transfer_from_this = possible_transfer_amounts[i+1]
|
|
else
|
|
amount_per_transfer_from_this = possible_transfer_amounts[1]
|
|
user << "<span class='notice'>[src]'s transfer amount is now [amount_per_transfer_from_this] units.</span>"
|
|
return
|
|
|
|
/obj/item/weapon/reagent_containers/attack(mob/M, mob/user, def_zone)
|
|
if(user.a_intent == "harm")
|
|
return ..()
|
|
|
|
/obj/item/weapon/reagent_containers/afterattack(obj/target, mob/user , flag)
|
|
return
|
|
|
|
/obj/item/weapon/reagent_containers/proc/reagentlist(obj/item/weapon/reagent_containers/snack) //Attack logs for regents in pills
|
|
var/data
|
|
if(snack.reagents.reagent_list && snack.reagents.reagent_list.len) //find a reagent list if there is and check if it has entries
|
|
for (var/datum/reagent/R in snack.reagents.reagent_list) //no reagents will be left behind
|
|
data += "[R.id]([R.volume] units); " //Using IDs because SOME chemicals(I'm looking at you, chlorhydrate-beer) have the same names as other chemicals.
|
|
return data
|
|
else return "No reagents"
|
|
|
|
/obj/item/weapon/reagent_containers/proc/canconsume(mob/eater, mob/user)
|
|
if(!iscarbon(eater))
|
|
return 0
|
|
var/mob/living/carbon/C = eater
|
|
var/covered = ""
|
|
if(C.is_mouth_covered(head_only = 1))
|
|
covered = "headgear"
|
|
else if(C.is_mouth_covered(mask_only = 1))
|
|
covered = "mask"
|
|
if(covered)
|
|
var/who = (isnull(user) || eater == user) ? "your" : "their"
|
|
user << "<span class='warning'>You have to remove [who] [covered] first!</span>"
|
|
return 0
|
|
return 1
|
|
|
|
/obj/item/weapon/reagent_containers/ex_act()
|
|
if(reagents)
|
|
for(var/datum/reagent/R in reagents.reagent_list)
|
|
R.on_ex_act()
|
|
..()
|
|
|
|
/obj/item/weapon/reagent_containers/fire_act()
|
|
reagents.chem_temp += 30
|
|
reagents.handle_reactions()
|
|
..()
|
|
|
|
/obj/item/weapon/reagent_containers/throw_impact(atom/target)
|
|
. = ..()
|
|
|
|
if(!reagents || !reagents.total_volume || !spillable)
|
|
return
|
|
|
|
if(ismob(target) && target.reagents)
|
|
reagents.total_volume *= rand(5,10) * 0.1 //Not all of it makes contact with the target
|
|
var/mob/M = target
|
|
var/R
|
|
target.visible_message("<span class='danger'>[M] has been splashed with something!</span>", \
|
|
"<span class='userdanger'>[M] has been splashed with something!</span>")
|
|
for(var/datum/reagent/A in reagents.reagent_list)
|
|
R += A.id + " ("
|
|
R += num2text(A.volume) + "),"
|
|
|
|
if(thrownby)
|
|
add_logs(thrownby, M, "splashed", R)
|
|
reagents.reaction(target, TOUCH)
|
|
|
|
else if((target.CanPass(src, get_turf(src))) && thrownby && thrownby.mind && thrownby.mind.assigned_role == "Bartender")
|
|
visible_message("<span class='notice'>[src] lands onto the [target.name] without spilling a single drop.</span>")
|
|
return
|
|
|
|
else
|
|
visible_message("<span class='notice'>[src] spills its contents all over [target].</span>")
|
|
reagents.reaction(target, TOUCH)
|
|
if(qdeleted(src))
|
|
return
|
|
|
|
reagents.clear_reagents()
|