From 06f842659abdb4f32275030e5cb350599592c55b Mon Sep 17 00:00:00 2001 From: SECBATON-GRIFFON <> Date: Wed, 20 Mar 2024 15:48:12 +0000 Subject: [PATCH 001/101] fluffs up this --- code/game/machinery/computer/arcade/arcade.dm | 4 +- .../machinery/computer/arcade/arcade_game.dm | 93 +++++++++++++++---- 2 files changed, 75 insertions(+), 22 deletions(-) diff --git a/code/game/machinery/computer/arcade/arcade.dm b/code/game/machinery/computer/arcade/arcade.dm index 4b65bf373f3e..63344ca21f06 100644 --- a/code/game/machinery/computer/arcade/arcade.dm +++ b/code/game/machinery/computer/arcade/arcade.dm @@ -70,8 +70,8 @@ game.emag_act(user) /obj/machinery/computer/arcade/arcane_act(mob/user) - game.emag_act(user) // until i come up with something better, reward differs for now though - return ..() + game.arcane_act(user) + return "H'NK!" /obj/machinery/computer/arcade/bless() return diff --git a/code/game/machinery/computer/arcade/arcade_game.dm b/code/game/machinery/computer/arcade/arcade_game.dm index 87a29f65f16b..bbc9602d0716 100644 --- a/code/game/machinery/computer/arcade/arcade_game.dm +++ b/code/game/machinery/computer/arcade/arcade_game.dm @@ -4,6 +4,7 @@ var/list/prizes = list() var/list/cheaters = list() var/emagged = 0 + var/arcanetampered = 0 var/turn = 0 /datum/arcade_game/Destroy() @@ -115,6 +116,7 @@ /datum/arcade_game/space_villain/export_data() return list("name" = name, "emagged" = emagged, + "arcanetampered" = arcanetampered, "enemy_name" = enemy_name, "temp" = temp, "player_hp" = player_hp, @@ -135,6 +137,7 @@ return name = args["name"] emagged = args["emagged"] + arcanetampered = args["arcanetampered"] enemy_name = args["enemy_name"] temp = args["temp"] player_hp = args["player_hp"] @@ -227,6 +230,9 @@ if(emagged) src.New() emagged = 0 + if(arcanetampered) + src.New() + arcanetampered = 0 holder.add_fingerprint(usr) holder.updateUsrDialog() @@ -239,29 +245,44 @@ temp = "[enemy_name] has fallen! Rejoice!" if(emagged) + new /obj/item/clothing/head/collectable/petehat(holder.loc) + new /obj/item/device/maracas/cubanpete(holder.loc) + new /obj/item/device/maracas/cubanpete(holder.loc) + if(arcanetampered) + new /obj/item/weapon/reagent_containers/glass/bottle/wizarditis(holder.loc) + new /obj/item/clothing/suit/wizrobe(holder.loc) + new /obj/item/clothing/head/wizard(holder.loc) + new /obj/item/clothing/shoes/sandal(holder.loc) + if(emagged && arcanetampered) + feedback_inc("arcade_win_arcane_emagged") + message_admins("[key_name_admin(usr)] has out-shoe-bombed Cuban Willy and been awarded explosive maracas and a wizard culture bottle.") + log_game("[key_name_admin(usr)] has out-shoe-bombed Cuban Willy and been awarded explosive maracas and a wizard culture bottle.") + else if(emagged) feedback_inc("arcade_win_emagged") - if(holder.arcanetampered) - new /obj/item/weapon/reagent_containers/glass/bottle/wizarditis(holder.loc) - new /obj/item/clothing/suit/wizrobe(holder.loc) - new /obj/item/clothing/head/wizard(holder.loc) - new /obj/item/clothing/shoes/sandal(holder.loc) - else - new /obj/item/clothing/head/collectable/petehat(holder.loc) - new /obj/item/device/maracas/cubanpete(holder.loc) - new /obj/item/device/maracas/cubanpete(holder.loc) message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded explosive maracas.") log_game("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded explosive maracas.") - holder.New() - emagged = 0 - + else if(arcanetampered) + feedback_inc("arcade_win_arcane") + message_admins("[key_name_admin(usr)] has out-shoe-snatched Willy and been awarded a wizard culture bottle.") + log_game("[key_name_admin(usr)] has out-shoe-snatched Willy and been awarded a wizard culture bottle.") else feedback_inc("arcade_win_normal") dispense_prize(1) + if(emagged || arcanetampered) + holder.New() + emagged = 0 + arcanetampered = 0 - else if (emagged && (turtle >= 4)) + else if (turtle >= 4) var/boomamt = rand(5,10) - temp = "[enemy_name] throws a bomb, exploding you for [boomamt] damage!" - player_hp -= boomamt + if(emagged) + temp = "[enemy_name] throws a bomb, exploding you for [boomamt] damage!" + player_hp -= boomamt + if(arcanetampered) + temp = "[enemy_name] snatches your shoes, stealing [boomamt] of your power!" + player_mp -= boomamt + if(emagged && arcanetampered) + temp = "[enemy_name] bombs your shoes, stealing [boomamt] of your power and exploding you for [boomamt] damage!" else if ((enemy_mp <= 5) && (prob(70))) var/stealamt = rand(2,3) @@ -276,6 +297,9 @@ if(emagged) feedback_inc("arcade_loss_mana_emagged") usr.gib() + else if(arcanetampered) + feedback_inc("arcade_loss_mana_arcanetampered") + usr.gib() else feedback_inc("arcade_loss_mana_normal") @@ -295,6 +319,9 @@ if(emagged) feedback_inc("arcade_loss_hp_emagged") usr.gib() + else if(arcanetampered) + feedback_inc("arcade_loss_mana_arcanetampered") + usr.gib() else feedback_inc("arcade_loss_hp_normal") @@ -327,10 +354,10 @@ if(istype(holder.playertwo,/mob/living/simple_animal/hostile/pulse_demon)) var/mob/living/simple_animal/hostile/pulse_demon/PD = holder.playertwo var/oldhealth = PD.health - var/subtract = 50 * (emagged * 3) //Packs a punch to them + var/subtract = 50 * ((emagged || arcanetampered) * 3) //Packs a punch to them PD.health -= subtract if(oldhealth - subtract <= 0) //If they die from this - if(emagged && prob(25)) + if((emagged || arcanetampered) && prob(25)) var/obj/item/device/powersink/PS = new /obj/item/device/powersink(holder.loc) PS.dev_multi = 6 else if(prob(50)) @@ -359,7 +386,7 @@ /datum/arcade_game/space_villain/proc/harm_p1() if(istype(holder.playertwo,/mob/living/simple_animal/hostile/pulse_demon) && isliving(holder.playerone)) var/mob/living/L = holder.playerone - L.electrocute_act(67 * (emagged * 3), src, 1) //And to the player too, if (s)he loses + L.electrocute_act(67 * ((emagged || arcanetampered) * 3), src, 1) //And to the player too, if (s)he loses /datum/arcade_game/space_villain/proc/action_charge() blocked = 1 @@ -450,7 +477,7 @@ check_p2_win() /datum/arcade_game/space_villain/is_cheater(mob/user) - if(emagged && !gameover) + if((emagged || arcanetampered) && !gameover) if(holder.stat & (NOPOWER|BROKEN|FORCEDISABLE)) return 0 else if(user in cheaters) @@ -483,6 +510,32 @@ enemy_name = "Cuban Pete" name = "Outbomb Cuban Pete" + if(arcanetampered) + enemy_name = "Cuban Willy" + name = "Out-shoe-bomb Willy" + + holder.updateUsrDialog() + +/datum/arcade_game/space_villain/arcane_act(mob/user) + if(is_cheater(user)) + return + + temp = "If you die in the game, you die for real!" + p2_temp = "If he dies in the game, he dies for real!" + player_hp = 30 + player_mp = 10 + enemy_hp = 45 + enemy_mp = 20 + gameover = 0 + blocked = 0 + + arcanetampered = 1 + + enemy_name = "Shoe Snatchin Willy" + name = "Out-shoe-snatch Willy" + if(emagged) + enemy_name = "Cuban Willy" + name = "Out-shoe-bomb Willy" holder.updateUsrDialog() @@ -499,7 +552,7 @@ if(is_cheater(usr)) return - if(!emagged && prob(5)) //Bug + if(!emagged && !arcanetampered && prob(5)) //Bug temp = "|eW R0vnb##[rand(0,9)]#" p2_temp = "|eW R0vnb##[rand(0,9)]#" player_hp = rand(1,30) From 7a6e549bdbb9ae18c63182d064c544482a2aba7a Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Mon, 29 Apr 2024 04:19:07 +0100 Subject: [PATCH 002/101] initial stuff --- .../factions/bloodcult/bloodcult_effects.dm | 20 ++++++- .../bloodcult/bloodcult_runespells.dm | 57 ++++++++++++++----- code/game/objects/items/weapons/cards_ids.dm | 8 +++ code/game/objects/structures/flora/flora.dm | 35 +----------- code/modules/projectiles/guns/energy.dm | 2 + .../projectiles/guns/energy/special.dm | 32 ++++++++--- .../modules/projectiles/projectile/special.dm | 5 +- code/modules/spells/targeted/push.dm | 44 +++++++------- 8 files changed, 125 insertions(+), 78 deletions(-) diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_effects.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_effects.dm index f37d2690ea17..8794cd27cbd6 100644 --- a/code/datums/gamemode/factions/bloodcult/bloodcult_effects.dm +++ b/code/datums/gamemode/factions/bloodcult/bloodcult_effects.dm @@ -66,7 +66,7 @@ qdel(src) /obj/effect/cult_shortcut/attack_hand(var/mob/living/user) - if (!iscultist(user)) + if (!iscultist(user) && !arcanetampered) to_chat(user, "The markings on this wall are peculiar. You don't feel comfortable staring at them.") return var/turf/T = get_turf(user) @@ -79,7 +79,23 @@ user.forceMove(loc) sleep(1) new /obj/effect/afterimage/red(loc,user) - user.forceMove(get_step(loc,jump_dir)) + if(!arcanetampered) + user.forceMove(get_step(loc,jump_dir)) + else + user.dimensional_push() + if(!iscultist(user)) + user.Knockdown(3) + user.Stun(3) + if(ishuman(user)) + shake_camera(L, 20, 1) + spawn(20) + if(user) + to_chat(user,"You vomit from travelling through \the [src]!") + user.nutrition = max(user.nutrition-20,0) + user.adjustToxLoss(-3) + var/turf/V = get_turf(user) //V for Vomit + V.add_vomit_floor(user) + playsound(V, 'sound/effects/splat.ogg', 50, 1) /obj/effect/cult_shortcut/cultify() return diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm index 26d6e4da7275..0cc701ea3295 100644 --- a/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm +++ b/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm @@ -63,9 +63,12 @@ voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\ occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." //Arcane tome page description. -/datum/rune_spell/New(var/mob/user, var/obj/holder, var/use = "ritual", var/mob/target) + var/spell_holder.spell_holder.arcanetampered = 0 + +/datum/rune_spell/New(var/mob/user, var/obj/holder, var/use = "ritual", var/mob/target, var/tampered) spell_holder = holder activator = user + spell_holder.spell_holder.arcanetampered = tampered if(use == "ritual") pre_cast() @@ -312,15 +315,21 @@ R.active_spell.midcast(user) return - switch(structure) - if("Altar") - spawntype = /obj/structure/cult/altar - if("Spire") - spawntype = /obj/structure/cult/spire - if("Forge") - spawntype = /obj/structure/cult/forge - if("Pylon") - spawntype = /obj/structure/cult/pylon + if(spell_holder?.arcanetampered) + spawntype = pick(/obj/item/weapon/reagent_containers/food/snacks/badrecipe,\ + /obj/item/weapon/bikehorn/rubberducky,\ + /obj/item/weapon/bikehorn,\ + /obj/item/weapon/card/fake_emag) + else + switch(structure) + if("Altar") + spawntype = /obj/structure/cult/altar + if("Spire") + spawntype = /obj/structure/cult/spire + if("Forge") + spawntype = /obj/structure/cult/forge + if("Pylon") + spawntype = /obj/structure/cult/pylon if(!spell_holder) return @@ -413,6 +422,8 @@ for(var/mob/living/L in contributors) var/datum/role/cultist/C = L.mind.GetRole(CULTIST) C.gain_devotion(10, DEVOTION_TIER_1,"raise_structure",structure) + if(spell_holder.arcanetampered) + playsound(spell_holder.loc, 'sound/misc/fart.ogg', 50, 1) new spawntype(spell_holder.loc) qdel(spell_holder) //Deletes the datum as well. @@ -444,6 +455,7 @@ R.one_pulse() var/mob/living/user = activator comms = new /obj/effect/cult_ritual/cult_communication(spell_holder.loc,user,src) + comms.arcanetampered = spell_holder?.arcanetampered /datum/rune_spell/communication/midcast(var/mob/living/user) var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult) @@ -538,17 +550,25 @@ speaker_name = H.real_name L = speech.speaker rendered_message = speech.render_message() + var/shownmessage = speech.message + if(arcanetampered) + if(prob(50)) + shownmessage = derpspeech(speech.message) + else + shownmessage = tumblrspeech(speech.message) + shownmessage = nekospeech(speech.message) + speaker_name = pick(clown_names) var/datum/faction/bloodcult = find_active_faction_by_member(iscultist(L)) for(var/datum/role/cultist/C in bloodcult.members) var/datum/mind/M = C.antag if (M.current == speech.speaker)//echoes are annoying continue if (iscultist(M.current))//failsafe for cultist brains put in MMIs - to_chat(M.current, "[speaker_name]'s voice echoes in your head, [speech.message]") + to_chat(M.current, "[speaker_name]'s voice echoes in your head, [shownmessage]") for(var/mob/living/simple_animal/astral_projection/A in astral_projections) - to_chat(A, "[speaker_name] communicates, [speech.message]") + to_chat(A, "[speaker_name] communicates, [shownmessage]") for(var/mob/dead/observer/O in player_list) - to_chat(O, "[speaker_name] communicates, [speech.message]") + to_chat(O, "[speaker_name] communicates, [shownmessage]") log_cultspeak("[key_name(speech.speaker)] Cult Communicate Rune: [rendered_message]") /obj/effect/cult_ritual/cult_communication/HasProximity(var/atom/movable/AM) @@ -2296,7 +2316,9 @@ var/list/seer_rituals = list() L.stat = CONSCIOUS if (L.reagents) L.reagents.del_reagent(HOLYWATER) - if (!L.reagents.has_any_reagents(HYPERZINES)) + if(spell_holder.arcanetampered && !L.reagents.has_any_reagents(HONKSERUM)) + L.reagents.add_reagent(HONKSERUM,1) + else if (!L.reagents.has_any_reagents(HYPERZINES)) L.reagents.add_reagent(HYPERZINE,1,"no motor mouth") qdel(spell_holder) qdel(src) @@ -2488,6 +2510,11 @@ var/list/seer_rituals = list() for(var/mob/living/L in contributors) to_chat(activator, "The ritual failed, the target seems to be under a curse that prevents us from reaching them through the veil.") else + if(spell_holder?.arcanetampered) // send in the clowns! + for (var/mob/living/carbon/human/H in player_list) + if(istype(H) && !H.stat && istype(H.get_item_by_slot(slot_wear_mask),/obj/item/clothing/mask/gas/clown_hat)) + target = H + break if (rejoin) var/list/valid_turfs = list() for(var/turf/T in orange(target,1)) @@ -3077,6 +3104,8 @@ var/list/bloodcult_exitportals = list() newCultist.tattoos[TATTOO_MANIFEST] = new /datum/cult_tattoo/manifest() vessel.equip_or_collect(new /obj/item/clothing/under/leather_rags(vessel), slot_w_uniform) + if(spell_holder?.arcanetampered) + vessel.adjustBrainLoss(100) M.regenerate_icons() diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 683a6a4d5b2b..0afdf4141afd 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -55,6 +55,14 @@ /* * ID CARDS */ + +/obj/item/weapon/card/fake_emag + desc = "It's a card with a magnetic strip attached to some circuitry... NOT!" + name = "cryptographic sequencer" + icon_state = "emag" + item_state = "card-id" + slot_flags = SLOT_ID + /obj/item/weapon/card/emag desc = "It's a card with a magnetic strip attached to some circuitry." name = "cryptographic sequencer" diff --git a/code/game/objects/structures/flora/flora.dm b/code/game/objects/structures/flora/flora.dm index 75588cbcd76e..5fdf33fba24f 100644 --- a/code/game/objects/structures/flora/flora.dm +++ b/code/game/objects/structures/flora/flora.dm @@ -347,40 +347,7 @@ user.visible_message("[user] stuffs something into the pot.", "You stuff \the [I] into the [src].") playsound(loc, "sound/effects/plant_rustle.ogg", 50, 1, -1) if(arcanetampered) - var/area/thearea - var/area/prospective = pick(areas) - while(!thearea) - if(prospective.type != /area) - var/turf/T = pick(get_area_turfs(prospective.type)) - if(T.z == user.z) - thearea = prospective - break - prospective = pick(areas) - var/list/L = list() - for(var/turf/T in get_area_turfs(thearea.type)) - if(!T.density) - var/clear = 1 - for(var/obj/O in T) - if(O.density) - clear = 0 - break - if(clear) - L+=T - if(!L.len) - return - - var/list/backup_L = L - var/attempt = null - var/success = 0 - while(L.len) - attempt = pick(L) - success = I.Move(attempt) - if(!success) - L.Remove(attempt) - else - break - if(!success) - I.forceMove(pick(backup_L)) + I.dimensional_push(user) /obj/structure/flora/pottedplant/attack_hand(mob/user) if(contents.len) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 1d5a221b7bb9..3bcdaca70140 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -47,6 +47,8 @@ if(!projectile_type) return 0 in_chamber = new projectile_type(src) + if(arcanetampered) + in_chamber.arcanetampered = arcanetampered return 1 /obj/item/weapon/gun/energy/update_icon() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 1694e7611f3a..911e1660a1ab 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -122,7 +122,14 @@ P.changetype=changetype return 1 +/obj/item/weapon/gun/energy/staff/change/arcane_act(mob/user, recursive) + changetype = null + return ..() + /obj/item/weapon/gun/energy/staff/change/attack_self(var/mob/living/user) + if(arcanetampered) + to_chat(user, "The dial conspicuously mounted on the side of your staff is spinning too hard for you to even touch!") + return if(world.time < next_changetype) to_chat(user, "[src] is still recharging.") return @@ -194,6 +201,9 @@ var/next_changetype = 0 /obj/item/weapon/gun/energy/staff/polymorph/attack_self(var/mob/living/user) + if(arcanetampered) + to_chat(user, "The dial conspicuously mounted on the side of your staff is spinning too hard for you to even touch!") + return if(world.time < next_changetype) to_chat(user, "[src] is still recharging.") return @@ -212,7 +222,10 @@ return 0 var/obj/item/projectile/polymorph/P=in_chamber if(P && istype(P)) - P.status=setting + if(arcanetampered) + P.status=pick(MINOR, MAJOR) + else + P.status=setting return 1 /obj/item/weapon/gun/energy/staff/necro @@ -266,11 +279,12 @@ if(H.stat) if(raisetype) H.dropBorers() - var/mob/living/simple_animal/hostile/necro/skeleton/spooky = new /mob/living/simple_animal/hostile/necro/skeleton(get_turf(H), user, H) + var/mob/living/simple_animal/hostile/necro/skeleton/spooky = new /mob/living/simple_animal/hostile/necro/skeleton(get_turf(H), arcanetampered ? null : user, H) H.gib() - spooky.faction = "\ref[user]" + if(!arcanetampered) + spooky.faction = "\ref[user]" else - H.zombify(user) + H.zombify(arcanetampered ? null : user) else success = FALSE @@ -282,17 +296,19 @@ var/mob/living/L = target if(L.stat == DEAD) success = TRUE - var/mob/living/simple_animal/hostile/necro/meat_ghoul/mG = new /mob/living/simple_animal/hostile/necro/meat_ghoul(get_turf(L), user) + var/mob/living/simple_animal/hostile/necro/meat_ghoul/mG = new /mob/living/simple_animal/hostile/necro/meat_ghoul(get_turf(L), arcanetampered ? null : user) mG.ghoulifyMeat(L) - mG.faction = "\ref[user]" + if(!arcanetampered) + mG.faction = "\ref[user]" L.gib() else to_chat(user,"The creature must be dead before it can be undead.") else if(istype(target, /obj/item/weapon/reagent_containers/food/snacks/meat)) - var/mob/living/simple_animal/hostile/necro/animal_ghoul/aG = new /mob/living/simple_animal/hostile/necro/animal_ghoul(get_turf(target), user, target) + var/mob/living/simple_animal/hostile/necro/animal_ghoul/aG = new /mob/living/simple_animal/hostile/necro/animal_ghoul(get_turf(target), arcanetampered ? null : user, target) success = TRUE aG.ghoulifyAnimal(target) - aG.faction = "\ref[user]" + if(!arcanetampered) + aG.faction = "\ref[user]" qdel(target) if(success) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index caccd2cac114..4c683fbbf168 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -390,7 +390,10 @@ /obj/item/projectile/swap/on_hit(var/atom/target, var/blocked = 0) var/turf/T = get_turf(target) do_teleport(target, firer.loc) - do_teleport(firer, T) + if(arcanetampered) + firer.dimensional_push() + else + do_teleport(firer, T) /obj/item/projectile/swap/advanced pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSRAILING diff --git a/code/modules/spells/targeted/push.dm b/code/modules/spells/targeted/push.dm index bf69dc6c5cae..852b5d1f46f6 100644 --- a/code/modules/spells/targeted/push.dm +++ b/code/modules/spells/targeted/push.dm @@ -34,6 +34,15 @@ /spell/targeted/push/cast(var/list/targets) ..() + for(var/atom/movable/target in targets) + if(target.dimensional_push()) + score.dimensionalpushes++ + +/spell/targeted/push/get_upgrade_price(upgrade_type) + return price / 2 + +/atom/movable/proc/dimensional_push(var/user) + . = 0 var/area/thearea var/area/prospective while(!thearea) @@ -43,7 +52,7 @@ if(!prospective_turfs.len) //An in-game area somehow lost its turfs, search for another one continue var/turf/T = pick(prospective_turfs) - if(T.z == holder.z) + if(!user || T.z == user.z) thearea = prospective break var/list/L = list() @@ -57,24 +66,21 @@ if(clear) L+=T if(!L.len) - to_chat(holder, "The spell matrix was unable to locate a suitable destination for an unknown reason. Sorry.") - return + if(user) + to_chat(user, "The spell matrix was unable to locate a suitable destination for an unknown reason. Sorry.") + return 0 var/list/backup_L = L - for(var/atom/movable/target in targets) - target.unlock_from() - var/attempt = null - var/success = 0 - while(L.len) - attempt = pick(L) - success = target.Move(attempt) - if(!success) - L.Remove(attempt) - else - score.dimensionalpushes++ - break + unlock_from() + var/attempt = null + var/success = 0 + while(L.len) + attempt = pick(L) + success = Move(attempt) if(!success) - target.forceMove(pick(backup_L)) - -/spell/targeted/push/get_upgrade_price(upgrade_type) - return price / 2 + L.Remove(attempt) + else + return 1 + if(!success) + forceMove(pick(backup_L)) + return 0 \ No newline at end of file From eb63453b8b57c2c495ade327ea8440709d33f8d1 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Mon, 29 Apr 2024 17:27:42 +0100 Subject: [PATCH 003/101] makes it compile --- code/datums/gamemode/factions/bloodcult/bloodcult_effects.dm | 2 +- .../gamemode/factions/bloodcult/bloodcult_runespells.dm | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_effects.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_effects.dm index 8794cd27cbd6..de98c576a392 100644 --- a/code/datums/gamemode/factions/bloodcult/bloodcult_effects.dm +++ b/code/datums/gamemode/factions/bloodcult/bloodcult_effects.dm @@ -87,7 +87,7 @@ user.Knockdown(3) user.Stun(3) if(ishuman(user)) - shake_camera(L, 20, 1) + shake_camera(user, 20, 1) spawn(20) if(user) to_chat(user,"You vomit from travelling through \the [src]!") diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm index 0cc701ea3295..e631d70179f5 100644 --- a/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm +++ b/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm @@ -63,12 +63,9 @@ voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\ occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." //Arcane tome page description. - var/spell_holder.spell_holder.arcanetampered = 0 - -/datum/rune_spell/New(var/mob/user, var/obj/holder, var/use = "ritual", var/mob/target, var/tampered) +/datum/rune_spell/New(var/mob/user, var/obj/holder, var/use = "ritual", var/mob/target) spell_holder = holder activator = user - spell_holder.spell_holder.arcanetampered = tampered if(use == "ritual") pre_cast() From 67ab2563b067c3797f651a115e5012d90377698a Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Mon, 29 Apr 2024 17:31:52 +0100 Subject: [PATCH 004/101] this too --- code/modules/spells/targeted/push.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/spells/targeted/push.dm b/code/modules/spells/targeted/push.dm index 852b5d1f46f6..caec475bf08e 100644 --- a/code/modules/spells/targeted/push.dm +++ b/code/modules/spells/targeted/push.dm @@ -41,18 +41,20 @@ /spell/targeted/push/get_upgrade_price(upgrade_type) return price / 2 -/atom/movable/proc/dimensional_push(var/user) +/atom/movable/proc/dimensional_push(var/mob/user) . = 0 var/area/thearea var/area/prospective while(!thearea) prospective = pick(areas) - if(prospective.type != /area) + if(!user) + thearea = prospective + if(!thearea || prospective.type != /area) var/list/prospective_turfs = get_area_turfs(prospective.type) if(!prospective_turfs.len) //An in-game area somehow lost its turfs, search for another one continue var/turf/T = pick(prospective_turfs) - if(!user || T.z == user.z) + if(T.z == user.z) thearea = prospective break var/list/L = list() From 35b973c88cd199b9979492e8e2e57b137d065494 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:03:02 +0100 Subject: [PATCH 005/101] adds these --- .../objects/items/devices/chameleonproj.dm | 13 +++++-- .../implants/types/explosive_implant.dm | 13 +++++++ .../weapons/implants/types/freedom_implant.dm | 8 ++++ .../reagent_containers/food/drinks.dm | 37 +++++++++++++++++++ 4 files changed, 67 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index bd23ef9a69c4..e588a2e0988d 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -49,10 +49,15 @@ if(istype(target, /obj/item) && !istype(target, /obj/item/weapon/disk/nuclear) || istype(target, /mob)) playsound(src, 'sound/weapons/flash.ogg', 100, 1, -6) to_chat(user, "Scanned [target].") - saved_item = target.type - saved_icon = target.icon - saved_icon_state = target.icon_state - saved_overlays = target.overlays.Copy() + if(arcanetampered) + saved_item = /obj/item/toy/syndicateballoon + saved_icon = 'icons/obj/weapons.dmi' + saved_icon_state = "syndballoon" + else + saved_item = target.type + saved_icon = target.icon + saved_icon_state = target.icon_state + saved_overlays = target.overlays.Copy() return 1 /obj/item/device/chameleon/proc/toggle() diff --git a/code/game/objects/items/weapons/implants/types/explosive_implant.dm b/code/game/objects/items/weapons/implants/types/explosive_implant.dm index 7268f74eb30f..dc0e8db15baf 100644 --- a/code/game/objects/items/weapons/implants/types/explosive_implant.dm +++ b/code/game/objects/items/weapons/implants/types/explosive_implant.dm @@ -56,6 +56,19 @@ score.implant_phrases += "[usr.real_name] ([get_key(usr)]) rigged [imp_in.real_name] to explode on the phrase \"[phrase]\"!" return 1 +/obj/item/weapon/implant/explosive/arcane_act(mob/user, recursive) + processing_objects.Add(src) + return ..() + +/obj/item/weapon/implant/explosive/bless() + if(arcanetampered) + processing_objects.Remove(src) + ..() + +/obj/item/weapon/implant/explosive/process() + if(arcanetampered && prob(10)) + imp_in.say(copytext(phrase,1,rand(2,length(phrase)))) + /obj/item/weapon/implant/explosive/emp_act(severity) if(malfunction) return diff --git a/code/game/objects/items/weapons/implants/types/freedom_implant.dm b/code/game/objects/items/weapons/implants/types/freedom_implant.dm index 201d99b3546f..99cc5287976e 100644 --- a/code/game/objects/items/weapons/implants/types/freedom_implant.dm +++ b/code/game/objects/items/weapons/implants/types/freedom_implant.dm @@ -24,6 +24,14 @@ var/jacket = dude.is_wearing_item(/obj/item/clothing/suit/strait_jacket, slot_wear_suit) if(jacket) source.u_equip(jacket, TRUE) + if(arcanetampered) + playsound(source.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) + source.Knockdown(10) + source.Stun(10) + if(iscarbon(source)) + var/mob/living/L = source + L.apply_effect(10, STUTTER) + /obj/item/weapon/implant/freedom/implanted(mob/implanter) imp_in.register_event(/event/emote, src, nameof(src::trigger())) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 219dd366aeac..a4b89fdf98f1 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -69,15 +69,52 @@ /obj/item/weapon/reagent_containers/food/drinks/arcane_act(mob/user) ..() cant_drop = 1 + processing_objects.Add(src) return prob(50) ? "D'TA EX'P'GED!" : "R'D'CTED!" /obj/item/weapon/reagent_containers/food/drinks/bless() ..() cant_drop = 0 + processing_objects.Remove(src) + +/obj/item/weapon/reagent_containers/food/drinks/process() + . = ..() + if(arcanetampered && ishuman(loc)) + var/mob/living/carbon/human/H = loc + if(src in H.held_items) + if(!reagents.is_full()) + H.vessel.trans_to(reagents,reagents.maximum_volume-reagents.total_volume) + H.nutrition += 3 + else + H.overeatduration = 0 + H.nutrition -= 10 + +/obj/item/weapon/reagent_containers/food/drinks/proc/drop_arcane(mob/user, body_destroyed) + user.unregister_event(/event/death, src, nameof(src::drop_arcane())) + cant_drop = 0 + user.drop_item(src, user.loc) + cant_drop = 1 + var/list/obj/structure/table/tables = list() + for(var/obj/structure/table/T in view(7,src)) + tables += T + var/obj/structure/table/ourtable = pick(tables) + forceMove(ourtable.loc) + reagents.clear_reagents() + var/static/list/blocked = list( + /datum/reagent/drink, + /datum/reagent/drink/cold, + ) + var/list/things_can_add = existing_typesof(/datum/reagent/drink) - blocked + var/list/things2add + for(var/addtype in things_can_add) + var/datum/reagent/R = addtype + things2add += list(initial(R.id)) + reagents.add_reagent(pick(things2add),reagents.maximum_volume/rand(4,5)) /obj/item/weapon/reagent_containers/food/drinks/pickup(var/mob/user) ..() if(ishuman(user) && arcanetampered) // wizards turn it into SCP-198 + user.register_event(/event/death, src, nameof(src::drop_arcane())) var/mob/living/carbon/human/H = user reagents.clear_reagents() H.audible_scream() From c00148e349adc0388c460f187e6b841f37475bce Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:19:40 +0100 Subject: [PATCH 006/101] stops limb removal for this --- code/modules/mob/living/carbon/human/human_damage.dm | 6 ++++++ code/modules/surgery/generic.dm | 3 +++ 2 files changed, 9 insertions(+) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index d4fd6c8eade5..159e45f00c1f 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -180,12 +180,18 @@ //Returns a list of damageable organs /mob/living/carbon/human/proc/get_damageable_organs(var/ignore_inorganics = FALSE) + var/arcanedrink = 0 + for(var/obj/item/I in held_items) + if(I.arcanetampered && istype(I,/obj/item/weapon/reagent_containers/food/drinks)) + arcanedrink = 1 var/list/datum/organ/external/parts = list() for(var/datum/organ/external/O in organs) if(!O.is_existing()) continue if(ignore_inorganics && !O.is_organic()) continue + if(arcanedrink && (O.type in list(/datum/organ/external/l_arm,/datum/organ/external/l_hand,/datum/organ/external/r_arm,/datum/organ/external/r_hand))) + continue if(O.brute_dam + O.burn_dam < O.max_damage) parts += O return parts diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 66aa2ed5aec0..809a44a95961 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -353,6 +353,9 @@ return 0 if(isslimeperson(target) && istype(affected, /datum/organ/external/head)) return 0 + for(var/obj/item/I in target.held_items) + if(I.arcanetampered && (target_zone == LIMB_LEFT_ARM || target_zone == LIMB_LEFT_HAND || target_zone == LIMB_RIGHT_ARM || target_zone == LIMB_RIGHT_HAND) && istype(I,/obj/item/weapon/reagent_containers/food/drinks)) + return 0 return target_zone != LIMB_CHEST && target_zone != LIMB_GROIN && target_zone != LIMB_HEAD /datum/surgery_step/generic/cut_limb/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) From 3936797ae19b1ff350e5b6f40607501324d37b66 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:52:12 +0100 Subject: [PATCH 007/101] living long balloons --- code/game/objects/items/toys.dm | 1 + code/modules/mob/living/simple_animal/hostile/balloon.dm | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index bc10e09fdba0..02ad9394cb05 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1687,6 +1687,7 @@ var/list/living_balloons = list() var/mob/living/simple_animal/hostile/balloon/B = new(get_turf(src), col, icon_state) B.name = name B.air_contents = air_contents + B.arcanetampered = arcanetampered qdel(src) /* diff --git a/code/modules/mob/living/simple_animal/hostile/balloon.dm b/code/modules/mob/living/simple_animal/hostile/balloon.dm index fafa0c9c2bb6..73addc8ec9a5 100644 --- a/code/modules/mob/living/simple_animal/hostile/balloon.dm +++ b/code/modules/mob/living/simple_animal/hostile/balloon.dm @@ -56,11 +56,16 @@ overlays += shine_overlay /mob/living/simple_animal/hostile/balloon/CanAttack(var/atom/the_target) + var/clumsyfound = FALSE if(isliving(the_target)) var/mob/living/L = the_target if(M_CLUMSY in L.mutations) - return 0 - return ..(the_target) + clumsyfound = TRUE + if(arcanetampered) // tampered ones only go after clowns now! + clumsyfound = !clumsyfound + if(!clumsyfound) + return ..(the_target) + return 0 /mob/living/simple_animal/hostile/balloon/FindTarget() . = ..() From ee95ad40c6cdeed26e2fa1b2c19e975fdc1ed677 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Mon, 29 Apr 2024 21:39:46 +0100 Subject: [PATCH 008/101] more syndie items done --- code/game/objects/items/stacks/cable.dm | 11 ++++- code/game/objects/items/weapons/cards_ids.dm | 37 ++++++++++---- .../objects/items/weapons/storage/toolbox.dm | 28 +++++------ .../objects/structures/vehicles/wheelchair.dm | 48 +++++++++++-------- 4 files changed, 81 insertions(+), 43 deletions(-) diff --git a/code/game/objects/items/stacks/cable.dm b/code/game/objects/items/stacks/cable.dm index a228035e7cc8..061ab9d22009 100644 --- a/code/game/objects/items/stacks/cable.dm +++ b/code/game/objects/items/stacks/cable.dm @@ -396,9 +396,18 @@ var/global/list/datum/stack_recipe/cable_recipes = list ( \ /obj/item/stack/cable_coil/white color = "#D0D0D0" +/obj/item/stack/cable_coil/random + var/list/colors = list("#FF0000","#FFED00","#0B8400","#005C84","#CA00B6") + +/obj/item/stack/cable_coil/random/toolbox + colors = list("#FF0000","#FFED00","#0B8400","#005C84","#CA00B6","#CA6900","#00B5CA","#D0D0D0") + +/obj/item/stack/cable_coil/random/etoolbox + colors = list("red","yellow","green","blue","pink","orange","cyan","white") + /obj/item/stack/cable_coil/random/New(loc, amount, var/param_color = null) ..() - color = pick("#FF0000","#FFED00","#0B8400","#005C84","#CA00B6") + color = pick(colors) update_icon() if (ismob(loc)) var/mob/M = loc diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 0afdf4141afd..1cebb0e88274 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -470,15 +470,23 @@ var/list/global/id_cards = list() ..() access = get_all_accesses() +/obj/item/weapon/card/id/syndicate/arcane_act(mob/user, recursive) + registered_name = prob(75) ? pick(clown_names) : user.real_name + icon_state = "clown" + assignment = pickweight(list("Clown" = 50,"Jester" = 25,"Syndicate" = 10,"Wizard" = 10,"ID that got arcane tampered" = 5)) + UpdateName() + return ..() + /obj/item/weapon/card/id/syndicate/afterattack(var/obj/item/weapon/O as obj, mob/user as mob) if(istype(O, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/I = O to_chat(user, "\The [src]'s microscanners activate as you pass it over \the [I], copying its access[copy_appearance ? " and appearance" : ""].") access |= I.access if(copy_appearance) - registered_name = I.registered_name - icon_state = I.icon_state - assignment = I.assignment + if(!arcanetampered) + registered_name = I.registered_name + icon_state = I.icon_state + assignment = I.assignment associated_account_number = I.associated_account_number blood_type = I.blood_type dna_hash = I.dna_hash @@ -500,7 +508,7 @@ var/list/global/id_cards = list() src.registered_name = "" return src.assignment = u - src.name = "[src.registered_name]'s ID Card ([src.assignment])" + UpdateName() to_chat(user, "You successfully forge the ID card.") registered_user = user else if(!registered_user || registered_user == user) @@ -514,6 +522,10 @@ var/list/global/id_cards = list() if("Edit") switch(input(user,"What would you like to edit on \the [src]?") in list("Name","Appearance","Occupation","Money account","Blood type","DNA hash","Fingerprint hash","Reset card")) if("Name") + if(arcanetampered) + to_chat(user,"HONK!") + user << 'sound/items/bikehorn.ogg' + return var/new_name = reject_bad_name(input(user,"What name would you like to put on this card?","Agent card name", ishuman(user) ? user.real_name : user.name)) if(!Adjacent(user)) return @@ -523,6 +535,10 @@ var/list/global/id_cards = list() to_chat(user, "Name changed to [new_name].") if("Appearance") + if(arcanetampered) + to_chat(user,"HONK!") + user << 'sound/items/bikehorn.ogg' + return var/list/appearances = list( "data", "id", @@ -560,6 +576,10 @@ var/list/global/id_cards = list() to_chat(usr, "Appearance changed to [choice].") if("Occupation") + if(arcanetampered) + to_chat(user,"HONK!") + user << 'sound/items/bikehorn.ogg' + return var/new_job = sanitize(stripped_input(user,"What job would you like to put on this card?\nChanging occupation will not grant or remove any access levels.","Agent card occupation", "Assistant", MAX_MESSAGE_LEN)) if(!Adjacent(user)) return @@ -617,10 +637,11 @@ var/list/global/id_cards = list() to_chat(user, "Fingerprint hash changed to [new_fingerprint_hash].") if("Reset card") - name = initial(name) - registered_name = initial(registered_name) - icon_state = initial(icon_state) - assignment = initial(assignment) + if(!arcanetampered) + name = initial(name) + registered_name = initial(registered_name) + icon_state = initial(icon_state) + assignment = initial(assignment) associated_account_number = initial(associated_account_number) blood_type = initial(blood_type) dna_hash = initial(dna_hash) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index 76354d47eaab..782e4d599117 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -100,22 +100,21 @@ /obj/item/tool/wirecutters, /obj/item/device/t_scanner, /obj/item/tool/crowbar, + /obj/item/stack/cable_coil/random/etoolbox = 2, ) /obj/item/weapon/storage/toolbox/electrical/New() ..() - var/color = pick("#FF0000","#FFED00","#0B8400","#005C84","#CA00B6","#CA6900","#00B5CA","#D0D0D0") - new /obj/item/stack/cable_coil(src,30,color) - new /obj/item/stack/cable_coil(src,30,color) if(prob(5)) new /obj/item/clothing/gloves/yellow(src) else - new /obj/item/stack/cable_coil(src,30,color) + new /obj/item/stack/cable_coil/random/etoolbox(src) /obj/item/weapon/storage/toolbox/electrical/arcane_act(mob/user) for(var/atom/A in contents) - qdel(A) - new /obj/item/clothing/gloves/fyellow(src) + if(A.type in items_to_spawn) + qdel(A) + new /obj/item/clothing/gloves/fyellow(src) return ..() /obj/item/weapon/storage/toolbox/syndicate @@ -131,12 +130,15 @@ /obj/item/tool/crowbar, /obj/item/tool/wirecutters, /obj/item/device/multitool, + /obj/item/stack/cable_coil/random/toolbox, ) -/obj/item/weapon/storage/toolbox/syndicate/New() - ..() - var/color = pick("red","yellow","green","blue","pink","orange","cyan","white") - new /obj/item/stack/cable_coil(src,30,color) +/obj/item/weapon/storage/toolbox/syndicate/arcane_act(mob/user) + for(var/atom/A in contents) + if(A.type in items_to_spawn) + qdel(A) + new /obj/item/weapon/card/fake_emag(src) + return ..() /obj/item/weapon/storage/toolbox/robotics name = "robotics toolbox" @@ -147,13 +149,9 @@ /obj/item/tool/weldingtool, /obj/item/tool/screwdriver, /obj/item/tool/wirecutters, + /obj/item/stack/cable_coil/random/toolbox, ) -/obj/item/weapon/storage/toolbox/robotics/New() - ..() - var/color = pick("red","yellow","green","blue","pink","orange","cyan","white") - new /obj/item/stack/cable_coil(src,30,color) - /obj/item/weapon/storage/toolbox/paint name = "painter's toolbox" desc = "Contains an assortment of paints for the artistic spacefarer." diff --git a/code/game/objects/structures/vehicles/wheelchair.dm b/code/game/objects/structures/vehicles/wheelchair.dm index be24ddd793e9..ad41bc87cda4 100644 --- a/code/game/objects/structures/vehicles/wheelchair.dm +++ b/code/game/objects/structures/vehicles/wheelchair.dm @@ -16,6 +16,7 @@ can_have_carts = FALSE var/image/wheel_overlay + var/multi_people = 0 /obj/structure/bed/chair/vehicle/wheelchair/New() . = ..() @@ -53,7 +54,7 @@ overlays -= wheel_overlay /obj/structure/bed/chair/vehicle/wheelchair/can_buckle(mob/M, mob/user) - if(!Adjacent(user) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.restrained() || user.stat || user.locked_to || occupant) //Same as vehicle/can_buckle, minus check for user.lying as well as allowing monkey and ayliens + if(!Adjacent(user) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.restrained() || user.stat || user.locked_to || (!multi_people && occupant)) //Same as vehicle/can_buckle, minus check for user.lying as well as allowing monkey and ayliens return 0 if(M_HULK in M.mutations) if(M == user) @@ -178,31 +179,28 @@ /obj/structure/bed/chair/vehicle/wheelchair/multi_people nick = "hella ride" desc = "A chair with fitted wheels. Something seems off about this one..." + multi_people = 1 -/obj/structure/bed/chair/vehicle/wheelchair/multi_people/examine(mob/user) +/obj/structure/bed/chair/vehicle/wheelchair/examine(mob/user) ..() - - if(is_locking(/datum/locking_category/buckle/chair/vehicle) > 9) + if(multi_people && is_locking(/datum/locking_category/buckle/chair/vehicle) > 9) to_chat(user, "WHAT THE FUCK") -/obj/structure/bed/chair/vehicle/wheelchair/multi_people/can_buckle(mob/M, mob/user) - //Same as parent's, but no occupant check! - if(!Adjacent(user) && !user.Adjacent(M) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.restrained() || user.stat || M.locked_to) - return 0 - return 1 - -/obj/structure/bed/chair/vehicle/wheelchair/multi_people/update_mob() - var/i = 0 - for(var/mob/living/L in get_locked(/datum/locking_category/buckle/chair/vehicle)) - L.pixel_x = 0 - L.pixel_y = 3 * PIXEL_MULTIPLIER + (i * 6 * PIXEL_MULTIPLIER) //Stack people on top of each other! +/obj/structure/bed/chair/vehicle/wheelchair/update_mob() + if(multi_people) + var/i = 0 + for(var/mob/living/L in get_locked(/datum/locking_category/buckle/chair/vehicle)) + L.pixel_x = 0 + L.pixel_y = 3 * PIXEL_MULTIPLIER + (i * 6 * PIXEL_MULTIPLIER) //Stack people on top of each other! - i++ + i++ + else + ..() -/obj/structure/bed/chair/vehicle/wheelchair/multi_people/manual_unbuckle(mob/user, var/resisting) +/obj/structure/bed/chair/vehicle/wheelchair/manual_unbuckle(mob/user, var/resisting) ..() - - update_mob() //Update the rest + if(multi_people) + update_mob() //Update the rest /obj/structure/bed/chair/vehicle/wheelchair/motorized name = "motorized wheelchair" @@ -266,6 +264,14 @@ desc = "A high-riding wheelchair fitted with a powerful cell and blades under the carriage. Better get a table between you and it." var/attack_cooldown = 0 +/obj/structure/bed/chair/vehicle/wheelchair/motorized/syndicate/arcane_act(mob/user) + multi_people = TRUE + return ..() + +/obj/structure/bed/chair/vehicle/wheelchair/motorized/syndicate/bless() + multi_people = FALSE + ..() + /obj/structure/bed/chair/vehicle/wheelchair/motorized/syndicate/to_bump(var/atom/A) if(isliving(A) && !attack_cooldown) var/mob/living/L = A @@ -281,6 +287,8 @@ L.Knockdown(5) L.lying = 1 L.update_icons() + if(arcanetampered && multi_people) + buckle_chair(L,occupant) ..() /obj/structure/bed/chair/vehicle/wheelchair/motorized/syndicate/proc/crush(var/mob/living/H,var/bloodcolor) //Basically identical to the MULE, see mulebot.dm @@ -290,6 +298,8 @@ H.apply_damage(damage, BRUTE, LIMB_CHEST) H.apply_damage(damage, BRUTE, LIMB_LEFT_LEG) H.apply_damage(damage, BRUTE, LIMB_RIGHT_LEG) + if(arcanetampered && multi_people) + buckle_chair(H,occupant) attack_cooldown = 1 spawn(10) attack_cooldown = 0 From b789db424932a4dd25223c8cea3b59e6f0de9721 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Mon, 29 Apr 2024 21:46:43 +0100 Subject: [PATCH 009/101] stack recipes are now infected --- code/game/objects/items/stacks/stack_recipes.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items/stacks/stack_recipes.dm b/code/game/objects/items/stacks/stack_recipes.dm index d2ba7d64ada3..a5831607fdf4 100644 --- a/code/game/objects/items/stacks/stack_recipes.dm +++ b/code/game/objects/items/stacks/stack_recipes.dm @@ -109,6 +109,8 @@ for(var/i = 1 to (max_res_amount>1 ? res_amount*multiplier : 1)) O = new result_type(construct_loc) + if(S.arcanetampered) + O.arcanetampered = S.arcanetampered S.stop_build(current_work == S.last_work) O.change_dir(usr.dir) if(start_unanchored) From eb9a170528d1e187ac23e1c8e0aeafc45d5143b8 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Wed, 4 Sep 2024 19:42:49 +0100 Subject: [PATCH 010/101] arcane tampering chems --- code/game/atoms.dm | 6 ++ code/modules/reagents/Chemistry-Reagents.dm | 1 + .../modules/reagents/reagents/reagents_dan.dm | 11 ++++ .../reagents/reagents/reagents_drink.dm | 5 ++ .../reagents/reagents/reagents_drug.dm | 7 +++ .../reagents/reagents/reagents_ethanol.dm | 62 +++++++++++++++++++ .../reagents/reagents/reagents_food.dm | 17 +++++ .../reagents/reagents/reagents_medical.dm | 49 +++++++++++++++ .../reagents/reagents/reagents_misc.dm | 2 + .../reagents/reagents/reagents_plant.dm | 4 ++ .../reagents/reagents/reagents_tools.dm | 6 ++ .../reagents/reagents/reagents_toxin.dm | 15 +++++ 12 files changed, 185 insertions(+) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 67b20fddf6c2..cf72457562f7 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -874,6 +874,12 @@ its easier to just keep the beam vertical. if(recursive) for(var/atom/A in contents) A.arcane_act(user,TRUE) + if(reagents) + for(var/datum/reagent/R in reagents.reagent_list) + if(R.arcane_id) + var/oldamt = R.volume + reagents.del_reagent(R.id) + reagents.add_reagent(R.arcane_id, oldamt) return "E'MAGI!" //Called on holy_water's reaction_obj() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index f8226fc556c5..85d79f6428e5 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -48,6 +48,7 @@ var/tolerance_increase = null //for tolerance, if set above 0, will increase each by that amount on tick. var/paint_light = PAINTLIGHT_NONE var/adj_temp = 0//keep between -1.5,20 to prevent people from freezing/burning themselves + var/arcane_id //arcane tampered replacement /datum/reagent/proc/reaction_mob(var/mob/living/M, var/method = TOUCH, var/volume, var/list/zone_sels = ALL_LIMBS, var/allow_permeability = TRUE, var/list/splashplosion=list()) set waitfor = 0 diff --git a/code/modules/reagents/reagents/reagents_dan.dm b/code/modules/reagents/reagents/reagents_dan.dm index 6eb4ffddc144..6ebbd763dbe8 100644 --- a/code/modules/reagents/reagents/reagents_dan.dm +++ b/code/modules/reagents/reagents/reagents_dan.dm @@ -7,6 +7,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#6F884F" //rgb: 111, 136, 79 nutriment_factor = 4 * REAGENTS_METABOLISM + arcane_id = PEPTOBISMOL /datum/reagent/discount/New() ..() @@ -46,6 +47,7 @@ name = "Mannitol" id = MANNITOL description = "The only medicine a REAL MAN needs." + arcane_id = WAIFU /datum/reagent/irradiatedbeans name = "Irradiated Beans" @@ -54,6 +56,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#6F884F" //rgb: 255,255,255 //to-do nutriment_factor = 1 * REAGENTS_METABOLISM + arcane_id = URANIUM /datum/reagent/irradiatedbeans/on_mob_life(var/mob/living/M) if(..()) @@ -70,6 +73,7 @@ color = "#6F884F" //rgb: 255,255,255 //to-do density = 5.59 specheatcap = 2.71 + arcane_id = TOXIN /datum/reagent/toxicwaste/on_mob_life(var/mob/living/M) if(..()) @@ -85,6 +89,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#6F884F" //rgb: 255,255,255 //to-do nutriment_factor = 1 * REAGENTS_METABOLISM + arcane_id = IRRADIATEDBEANS /datum/reagent/mutatedbeans name = "Mutated Beans" @@ -93,6 +98,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#6F884F" //rgb: 255,255,255 //to-do nutriment_factor = 1 * REAGENTS_METABOLISM + arcane_id = URANIUM /datum/reagent/mutatedbeans/on_mob_life(var/mob/living/M) if(..()) @@ -123,6 +129,7 @@ description = "We don't know much about it, but we damn well know that it hates the human skeleton." reagent_state = REAGENT_STATE_LIQUID color = "#6F884F" //rgb: 255,255,255 //to-do + arcane_id = DIAMONDDUST /datum/reagent/moonrocks/on_mob_life(var/mob/living/M) if(..()) @@ -146,6 +153,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#6F884F" //rgb: 255,255,255 //to-do nutriment_factor = 1 * REAGENTS_METABOLISM + arcane_id = DEGENERATECALCIUM /datum/reagent/greenramen name = "Greenish Ramen Noodles" @@ -154,6 +162,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#6F884F" //rgb: 255,255,255 //to-do nutriment_factor = 2 * REAGENTS_METABOLISM + arcane_id = HELL_RAMEN /datum/reagent/greenramen/on_mob_life(var/mob/living/M) if(..()) @@ -172,6 +181,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#6F884F" //rgb: 255,255,255 //to-do nutriment_factor = 2 * REAGENTS_METABOLISM + arcane_id = HELL_RAMEN /datum/reagent/glowingramen/on_mob_life(var/mob/living/M) if(..()) @@ -187,6 +197,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#6F884F" //rgb: 255,255,255 //to-do nutriment_factor = 2 * REAGENTS_METABOLISM + arcane_id = HELL_RAMEN /datum/reagent/fake_creep // Used to spread xenomorph creep. Why? Well, why not? name = "Dan's Grape Drank" diff --git a/code/modules/reagents/reagents/reagents_drink.dm b/code/modules/reagents/reagents/reagents_drink.dm index 170308e7cc02..332c2d6d9826 100644 --- a/code/modules/reagents/reagents/reagents_drink.dm +++ b/code/modules/reagents/reagents/reagents_drink.dm @@ -430,6 +430,7 @@ adj_temp = 20 mug_icon_state = "tea" mug_desc = "A warm mug of tea." + arcane_id = GRAVSINGULARITEA /datum/reagent/drink/tea/on_mob_life(var/mob/living/M) if(..()) @@ -695,6 +696,7 @@ glass_icon_state = "doctorsdelightglass" glass_name = "\improper Doctor's Delight" glass_desc = "A rejuvenating mixture of juices, guaranteed to keep you healthy until the next toolboxing takes place." + arcane_id = FORMIC_ACID /datum/reagent/drink/doctor_delight/on_mob_life(var/mob/living/M) if(..()) @@ -722,6 +724,7 @@ glass_icon_state = "bananahonkglass" glass_name = "\improper Banana Honk" glass_desc = "A cocktail from the clown planet." + arcane_id = HONKSERUM /datum/reagent/drink/silencer name = "Silencer" @@ -732,6 +735,7 @@ glass_icon_state = "silencerglass" glass_name = "\improper Silencer" glass_desc = "The mime's favorite, though you won't hear him ask for it." + arcane_id = HONKSERUM /datum/reagent/drink/silencer/on_mob_life(var/mob/living/M) if(..()) @@ -1008,6 +1012,7 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood") mug_name = "\improper Lifeline" mug_desc = "Some days, the only thing that keeps you going is cryo and caffeine." color = "#390600" + arcane_id = PHENOL /datum/reagent/drink/coffee/medcoffee/on_mob_life(var/mob/living/M) if(..()) diff --git a/code/modules/reagents/reagents/reagents_drug.dm b/code/modules/reagents/reagents/reagents_drug.dm index ee7451aee11d..12a019a975b2 100644 --- a/code/modules/reagents/reagents/reagents_drug.dm +++ b/code/modules/reagents/reagents/reagents_drug.dm @@ -198,6 +198,7 @@ overdose_am = REAGENTS_OVERDOSE/2 density = 1.79 specheatcap = 0.70 + arcane_id = HYPOZINE /datum/reagent/hyperzine/on_mob_life(var/mob/living/M) if(..()) @@ -271,6 +272,7 @@ var/has_had_heart_explode = 0 //We've applied permanent damage. custom_metabolism = 0.04 var/oldspeed = 0 + arcane_id = HYPERZINE /datum/reagent/hypozine/reagent_deleted() if(..()) @@ -400,6 +402,7 @@ overdose_am = REAGENTS_OVERDOSE density = 8.15 specheatcap = 0.16 + arcane_id = METHYLIN /datum/reagent/impedrezene/on_mob_life(var/mob/living/M) if(..()) @@ -420,12 +423,14 @@ reagent_state = REAGENT_STATE_LIQUID color = "#181818" //rgb: 24, 24, 24 density = 1.01 + arcane_id = DANBACCO /datum/reagent/psilocybin name = "Psilocybin" id = PSILOCYBIN description = "A strong psycotropic derived from certain species of mushroom." color = "#E700E7" //rgb: 231, 0, 231 + arcane_id = SPIRITBREAKER /datum/reagent/psilocybin/on_mob_life(var/mob/living/M) if(..()) @@ -486,6 +491,7 @@ overdose_am = REAGENTS_OVERDOSE density = 5.23 specheatcap = 0.62 + arcane_id = LIQUIDPCP /datum/reagent/space_drugs/on_mob_life(var/mob/living/M) if(..()) @@ -508,3 +514,4 @@ reagent_state = REAGENT_STATE_SOLID color = "#4c1e00" //rgb: 76, 30, 0 density = 1.01 + arcane_id = DANBACCO diff --git a/code/modules/reagents/reagents/reagents_ethanol.dm b/code/modules/reagents/reagents/reagents_ethanol.dm index 0c19ffaa8a64..7b0e0b0be3fd 100644 --- a/code/modules/reagents/reagents/reagents_ethanol.dm +++ b/code/modules/reagents/reagents/reagents_ethanol.dm @@ -19,6 +19,7 @@ var/blur_start = 260 //Amount absorbed after which mob starts getting blurred vision var/pass_out = 450 //Amount absorbed after which mob starts passing out var/common_tick = 1 //Needed to add all ethanol subtype's ticks + arcane_id = ETHYLREDOXRAZINE /datum/reagent/ethanol/on_mob_life(var/mob/living/M) if(..()) @@ -109,6 +110,7 @@ pass_out = 225 glass_icon_state = "whiskeyglass" glass_desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy." + arcane_id = DANS_WHISKEY /datum/reagent/ethanol/specialwhiskey name = "Special Blend Whiskey" @@ -117,6 +119,7 @@ color = "#664300" //rgb: 102, 67, 0 slur_start = 30 pass_out = 225 + arcane_id = DANS_WHISKEY /datum/reagent/ethanol/gin name = "Gin" @@ -127,6 +130,7 @@ pass_out = 260 glass_icon_state = "ginvodkaglass" glass_desc = "A crystal clear glass of Griffeater gin." + arcane_id = WAIFU /datum/reagent/ethanol/absinthe name = "Absinthe" @@ -157,6 +161,7 @@ confused_start = 145 glass_icon_state = "bwineglass" glass_desc = "A particular favorite of doctors." + arcane_id = PWINE /datum/reagent/ethanol/wwine name = "White Wine" @@ -168,6 +173,7 @@ confused_start = 145 glass_icon_state = "wwineglass" glass_desc = "A drink enjoyed by intellectuals and middle-aged female alcoholics alike." + arcane_id = PWINE /datum/reagent/ethanol/plumphwine name = "Plump Helmet Wine" @@ -177,6 +183,7 @@ dizzy_adj = 3 //dorf wine is a bit stronger than regular stuff slur_start = 60 confused_start = 135 + arcane_id = PWINE /datum/reagent/ethanol/pwine name = "Poison Wine" @@ -188,6 +195,7 @@ confused_start = 1 glass_name = "glass of Vintage 2018 Special Reserve" glass_icon_state = "pwineglass" + arcane_id = WINE /datum/reagent/ethanol/pwine/on_mob_life(var/mob/living/M) if(..()) @@ -251,6 +259,7 @@ description = "A thick, light blue liquid extracted from strange plants." color = "#66ffff" //rgb(102, 255, 255) blur_start = 40 //Blur very early + arcane_id = MINDBREAKER /datum/reagent/ethanol/smokyroom name = "Smoky Room" @@ -259,6 +268,7 @@ color = "#664300" glass_icon_state = "smokyroom" glass_name = "\improper Smoky Room" + arcane_id = DETCOFFEE /datum/reagent/ethanol/smokyroom/on_mob_life(var/mob/living/M) if(..()) @@ -315,6 +325,7 @@ color = "#664300" glass_icon_state = "bad_touch" glass_name = "\improper Bad Touch" + arcane_id = SYNAPTIZINE /datum/reagent/ethanol/bad_touch/on_mob_life(var/mob/living/M) //Hallucinate and take hallucination damage. if(..()) @@ -330,6 +341,7 @@ custom_metabolism = 1 glass_icon_state = "electric_sheep" glass_name = "\improper Electric Sheep" + arcane_id = AUTISTNANITES /datum/reagent/ethanol/electric_sheep/on_mob_life(var/mob/living/M) //If it's human, shoot sparks every tick! If MoMMI, cause alcohol effects. if(..()) @@ -351,6 +363,7 @@ custom_metabolism = 2 glass_icon_state = "suicide" glass_name = "\improper Suicide" + arcane_id = PAROXETINE /datum/reagent/ethanol/suicide/on_mob_life(var/mob/living/M) //Instant vomit. Every tick. if(..()) @@ -368,6 +381,7 @@ glass_icon_state = "metabuddy" glass_name = "\improper Metabuddy" glass_desc = "The glass is etched with the name of a very deserving spaceman. There's a special note etched in the bottom..." + arcane_id = CHILLWAX /datum/reagent/ethanol/metabuddy/on_mob_life(var/mob/living/L) if(..()) @@ -397,6 +411,7 @@ color = "#D0206F" glass_icon_state = "waifu" glass_name = "\improper Waifu" + arcane_id = HUSBANDO /datum/reagent/ethanol/waifu/on_mob_life(var/mob/living/M) if(..()) @@ -426,6 +441,7 @@ color = "#2043D0" glass_icon_state = "husbando" glass_name = "\improper Husbando" + arcane_id = WAIFU /datum/reagent/ethanol/husbando/on_mob_life(var/mob/living/M) //it's copypasted from waifu if(..()) @@ -455,6 +471,7 @@ color = "#20D03B" glass_icon_state = "tomboy" glass_name = "\improper Tomboy" + arcane_id = HUSBANDO /datum/reagent/ethanol/tomboy/on_mob_life(var/mob/living/M) if(..()) @@ -481,6 +498,7 @@ color = "#664300" custom_metabolism = 0.01 dupeable = FALSE + arcane_id = MOONROCKS /datum/reagent/ethanol/scientists_serendipity/when_drinkingglass_master_reagent(var/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/D) if(volume < 10) @@ -509,6 +527,7 @@ custom_metabolism = 2 //Ten times the normal rate. glass_icon_state = "beepsky_classic" name = "\improper Beepsky Classic" + arcane_id = BEEPSKYSMASH /datum/reagent/ethanol/beepskyclassic/on_mob_life(var/mob/living/M) if(..()) @@ -531,6 +550,7 @@ glass_icon_state = "spiders" name = "\improper This glass is full of spiders" glass_desc = "Seriously, dude, don't touch it." + arcane_id = CLONEXADONE /datum/reagent/ethanol/spiders/on_mob_life(var/mob/living/M) if(..()) @@ -549,6 +569,7 @@ color = "#009933" //rgb(0, 153, 51) glass_icon_state = "weed_eater" glass_name = "\improper Weed Eater" + arcane_id = PLANTBGONE /datum/reagent/ethanol/weedeater/on_mob_life(var/mob/living/M) if(..()) @@ -565,6 +586,7 @@ color = "#009933" //rgb(0, 153, 51) glass_icon_state = "magicadeluxe" glass_name = "magica deluxe" + arcane_id = MAGICA /datum/reagent/ethanol/magicadeluxe/on_mob_life(var/mob/living/M) if(..()) @@ -618,6 +640,7 @@ glass_icon_state = "gravsingulo" glass_name = "\improper Gravitational Singulo" glass_desc = "The destructive, murderous Lord Singuloth, patron saint of Bargineering, now in grape flavor!" + arcane_id = SINGULO /datum/reagent/ethanol/drink/gravsingulo/on_mob_life(var/mob/living/M) if(..()) @@ -661,6 +684,7 @@ mug_icon_state = "gravsingularitea" mug_name = "\improper Gravitational Singularitea" mug_desc = "The destructive, murderous Lord Singuloth, patron saint of Bargineering, now in herbal flavour!" + arcane_id = SINGULARITEA /datum/reagent/drink/tea/gravsingularitea/on_mob_life(var/mob/living/M) if(..()) @@ -847,6 +871,7 @@ color = "#3AD1F0" //rgb: 58, 209, 240 glass_icon_state = "curacaoglass" glass_desc = "Why's it blue if it tastes like an orange?" + arcane_id = FISHBLEACH //da ba dee da ba die /datum/reagent/ethanol/drink/ale name = "Ale" @@ -879,6 +904,7 @@ color = "#ff6a8f" glass_icon_state = "pinklady" glass_desc = "A delightful blush-pink cocktail, garnished with a cherry and the rind of a lemon." + arcane_id = WAIFU /////////////////////////////////////////////////////////////////Cocktail Entities////////////////////////////////////////////// @@ -998,6 +1024,7 @@ glass_icon_state = "whiterussianglass" glass_name = "\improper White Russian" glass_desc = "A very nice looking drink. But that's just, like, your opinion, man." + arcane_id = BLACKRUSSIAN /datum/reagent/ethanol/drink/screwdrivercocktail name = "Screwdriver" @@ -1018,6 +1045,7 @@ glass_icon_state = "booger" glass_name = "\improper Booger" glass_desc = "The color reminds you of something that came out of the clown's nose." + arcane_id = MUCUS /datum/reagent/ethanol/drink/bloody_mary name = "Bloody Mary" @@ -1028,6 +1056,7 @@ glass_icon_state = "bloodymaryglass" glass_name = "\improper Bloody Mary" glass_desc = "Tomato juice, mixed with vodka and a lil' bit of lime. Tastes like liquid murder." + arcane_id = BLOOD /datum/reagent/ethanol/drink/gargle_blaster name = "Pan-Galactic Gargle Blaster" @@ -1038,6 +1067,7 @@ glass_icon_state = "gargleblasterglass" glass_name = "\improper Pan-Galactic Gargle Blaster" glass_desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy." + arcane_id = BAD_TOUCH /datum/reagent/ethanol/drink/brave_bull name = "Brave Bull" @@ -1068,6 +1098,7 @@ glass_icon_state = "toxinsspecialglass" glass_name = "\improper Toxins Special" glass_desc = "Whoah, this thing is on FIRE!" + arcane_id = PLASMA /datum/reagent/ethanol/drink/beepsky_smash name = "Beepsky Smash" @@ -1078,6 +1109,7 @@ glass_icon_state = "beepskysmashglass" glass_name = "\improper Beepsky Smash" glass_desc = "Heavy, hot and strong. Best enjoyed with your hands behind your back." + arcane_id = BEEPSKY_CLASSIC /datum/reagent/ethanol/drink/irish_cream name = "Irish Cream" @@ -1087,6 +1119,7 @@ color = "#664300" //rgb: 102, 67, 0 glass_icon_state = "irishcreamglass" glass_desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?" + arcane_id = POTATO /datum/reagent/ethanol/drink/manly_dorf name = "The Manly Dorf" @@ -1097,6 +1130,7 @@ glass_icon_state = "manlydorfglass" glass_name = "The Manly Dorf" glass_desc = "A dwarfy concoction made from ale and beer. Intended for stout dwarves only." + arcane_id = WAIFU /datum/reagent/ethanol/drink/longislandicedtea name = "Long Island Iced Tea" @@ -1124,6 +1158,7 @@ color = "#bd1c1e" //rgb: 189, 28, 30 glass_icon_state = "sacrificialmary" glass_name = "\improper Sacrificial Mary" + arcane_id = BLOOD /datum/reagent/ethanol/drink/boysenberry_blizzard name = "Boysenberry Blizzard" @@ -1133,6 +1168,7 @@ color = "#aa4cbd" //rgb: 170, 76, 189 glass_icon_state = "boysenberryblizzard" glass_name = "\improper Boysenberry Blizzard" + arcane_id = PLASMA /datum/reagent/ethanol/drink/moonshine name = "Moonshine" @@ -1158,6 +1194,7 @@ color = "#d64054" //rgb: 214, 64, 84 glass_icon_state = "cosmopolitan" glass_name = "cosmopolitan" + arcane_id = WAIFU /datum/reagent/ethanol/drink/corpsereviver name = "Corpse Reviver No. 2" @@ -1167,6 +1204,7 @@ color = "#FFFFFF" //rgb: 255, 255, 255 glass_icon_state = "corpsereviver" glass_name = "\improper Corpse Reviver No. 2" + arcane_id = ZOMBIEPOWDER /datum/reagent/ethanol/drink/bluelagoon name = "Blue Lagoon" @@ -1176,6 +1214,7 @@ color = "#82f0ff" //rgb: 130, 240, 255 glass_icon_state = "bluelagoon" glass_name = "\improper Blue Lagoon" + arcane_id = FISHBLEACH /datum/reagent/ethanol/drink/sexonthebeach name = "Sex On The Beach" @@ -1275,6 +1314,7 @@ color = "#f29224" //rgb: 242, 146, 36 glass_icon_state = "fireballglass" glass_desc = "Red-hot cinnamon whisky in a shot glass." + arcane_id = CONDENSEDCAPSAICIN /datum/reagent/ethanol/drink/c4cocktail name = "C-4 Cocktail" @@ -1296,6 +1336,7 @@ glass_name = "\improper Dragon's Blood" flammable = 1 light_color = "#540303" + arcane_id = BLOOD /datum/reagent/ethanol/drink/dragonspit name = "Dragon's Spit" @@ -1307,6 +1348,7 @@ glass_name = "\improper Dragon's Spit" light_color = "#ff7003" flammable = 1 + arcane_id = CONDENSEDCAPSAICIN /datum/reagent/ethanol/drink/firecider name = "Fire Cider" @@ -1338,6 +1380,7 @@ glass_name = "\improper Manhattan Fireball" light_color = "#540303" flammable = 1 + arcane_id = CONDENSEDCAPSAICIN /datum/reagent/ethanol/drink/fireballcola name = "Fireball Cola" @@ -1348,6 +1391,7 @@ glass_icon_state = "fireballcola" glass_name = "\improper Fireball Cola" glass_desc = "Cinnamon whisky and cola - like a regular whiskey cola, but with more burning." + arcane_id = CONDENSEDCAPSAICIN /datum/reagent/ethanol/drink/firerita name = "Fire-rita" @@ -1358,6 +1402,7 @@ glass_icon_state = "firerita" glass_name = "firerita" glass_desc = "Looks pretty, offends a sane person's taste buds. Then again, anyone who orders this probably lacks one of those two traits." + arcane_id = CONDENSEDCAPSAICIN /datum/reagent/ethanol/drink/magica name = "Magica" @@ -1368,6 +1413,7 @@ glass_icon_state = "magica" glass_name = "magica" glass_desc = "Bitter, with an annoying aftertaste of spice. Supposedly inspired by wearers of bath robes." + arcane_id = MAGICADELUXE /datum/reagent/ethanol/drink/b52 name = "B-52" @@ -1387,6 +1433,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#664300" //rgb: 102, 67, 0 glass_icon_state = "irishcoffeeglass" + arcane_id = POTATO /datum/reagent/ethanol/drink/margarita name = "Margarita" @@ -1405,6 +1452,7 @@ glass_icon_state = "blackrussianglass" glass_name = "\improper Black Russian" glass_desc = "For the lactose-intolerant. Still as classy as a White Russian." + arcane_id = WHITERUSSIAN /datum/reagent/ethanol/drink/manhattan name = "Manhattan" @@ -1423,6 +1471,7 @@ color = "#664300" //rgb: 102, 67, 0 glass_icon_state = "proj_manhattanglass" glass_name = "\improper Manhattan Project" + arcane_id = URANIUM //we knew the cocktail would no longer be the same /datum/reagent/ethanol/drink/whiskeysoda name = "Whiskey Soda" @@ -1440,6 +1489,7 @@ color = "#664300" //rgb: 102, 67, 0 glass_icon_state = "antifreeze" glass_name = "\improper Anti-freeze" + arcane_id = FROSTOIL /datum/reagent/ethanol/drink/barefoot name = "Barefoot" @@ -1470,6 +1520,7 @@ glass_icon_state = "demonsblood" glass_name = "\improper Demon's Blood" glass_desc = "Just looking at this thing makes the hair on the back of your neck stand up." + arcane_id = BLOOD /datum/reagent/ethanol/drink/vodkatonic name = "Vodka and Tonic" @@ -1524,6 +1575,7 @@ glass_icon_state = "singulo" glass_name = "\improper Singulo" glass_desc = "IT'S LOOSE!" + arcane_id = GRAVSINGULO /datum/reagent/ethanol/drink/sangria name = "Sangria" @@ -1610,6 +1662,7 @@ color = BLOB_MEAT glass_icon_state = "evoluatorglass" glass_desc = "Blob evoluated with oxigen. Prickly!" + arcane_id = SPORE /datum/reagent/ethanol/drink/blob_beer name = "Blob beer" @@ -1619,6 +1672,7 @@ color = BLOB_MEAT glass_icon_state = "blobbeerglass" glass_desc = "Acidic beer with a grand foam head. Subtle hints of apple." + arcane_id = SPORE /datum/reagent/ethanol/drink/liberator name = "Liberator" @@ -1628,6 +1682,7 @@ color = DEFAULT_BLOOD glass_icon_state = "liberatorglass" glass_desc = "Fruity and strong, for when you need a quick recharge." + arcane_id = SPORE /datum/reagent/ethanol/drink/spore name = "Spore" @@ -1638,6 +1693,7 @@ custom_metabolism = 0.1 glass_icon_state = "sporeglass" glass_desc = "A tasteless drink with an almost unbearable aftertaste." + arcane_id = BLOBANINE /datum/reagent/ethanol/drink/spore/on_mob_life(var/mob/living/M) if(..()) @@ -1742,6 +1798,7 @@ glass_icon_state = "changelingsting" glass_name = "\improper Changeling Sting" glass_desc = "Stings, but not deadly." + arcane_id = CHANGELINGSTAB /datum/reagent/ethanol/drink/changelingsting/on_mob_life(var/mob/living/M) if(..()) @@ -1755,6 +1812,7 @@ description = "A bit less mild than the sting. Not that you've ever been stabbed either, surely." glass_name = "\improper Changeling Stab" glass_desc = "Stabs, but metaphorically." + arcane_id = CHANGELINGSTING /datum/reagent/ethanol/drink/changelingsting/stab/on_mob_life(var/mob/living/M) if(..()) @@ -1780,6 +1838,7 @@ glass_icon_state = "irishcarbomb" glass_name = "\improper Irish Car Bomb" glass_desc = "Something about this drink troubles you." + arcane_id = POTATO /datum/reagent/ethanol/drink/irishcarbomb/on_mob_life(var/mob/living/M) if(..()) @@ -1797,6 +1856,7 @@ glass_name = "\improper Syndicate Bomb" glass_desc = "Somebody set up us the bomb!" glass_isGlass = 0 + arcane_id = AMMONIUMNITRATE /datum/reagent/ethanol/drink/driestmartini name = "Driest Martini" @@ -1865,6 +1925,7 @@ description = "A little help finding the bartender." reagent_state = REAGENT_STATE_LIQUID color = "#664300" //rgb: 102, 67, 0 + arcane_id = METABUDDY /datum/reagent/ethanol/drink/pintpointer/when_drinkingglass_master_reagent(var/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/D) var/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/pintpointer/P = new (get_turf(D)) @@ -1888,6 +1949,7 @@ glass_icon_state = "monster_mash" glass_name = "\improper Monster Mash" glass_desc = "Will get you graveyard smashed." + arcane_id = MUTAGEN /datum/reagent/ethanol/drink/monstermash/on_mob_life(var/mob/living/M) if(..()) diff --git a/code/modules/reagents/reagents/reagents_food.dm b/code/modules/reagents/reagents/reagents_food.dm index b67dcba0e7bc..9943824e5cf4 100644 --- a/code/modules/reagents/reagents/reagents_food.dm +++ b/code/modules/reagents/reagents/reagents_food.dm @@ -70,6 +70,7 @@ custom_metabolism = FOOD_METABOLISM density = 0.53 specheatcap = 3.49 + arcane_id = CONDENSEDCAPSAICIN /datum/reagent/capsaicin/on_mob_life(var/mob/living/M) @@ -255,6 +256,7 @@ density = 0.9185 specheatcap = 2.402 var/has_had_heart_explode = 0 + arcane_id = LIPOZINE /datum/reagent/cornoil/on_mob_life(var/mob/living/M) @@ -311,6 +313,7 @@ specheatcap = 0.55536 overdose_am = 30 custom_metabolism = 0.05 + arcane_id = LIPOZINE /datum/reagent/diabeetusol/on_mob_life(var/mob/living/M) if(..()) @@ -354,6 +357,7 @@ reagent_state = REAGENT_STATE_SOLID nutriment_factor = REAGENTS_METABOLISM color = "#302000" //rgb: 48, 32, 0 + arcane_id = HELL_RAMEN /datum/reagent/dry_ramen/on_mob_life(var/mob/living/M) if(..()) @@ -426,6 +430,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#8BA6E9" //rgb: 139, 166, 233 custom_metabolism = FOOD_METABOLISM + arcane_id = CONDENSEDCAPSAICIN /datum/reagent/frostoil/on_mob_life(var/mob/living/M) @@ -492,6 +497,7 @@ reagent_state = REAGENT_STATE_LIQUID nutriment_factor = 10 * REAGENTS_METABOLISM color = "#E7A568" + arcane_id = WATER /datum/reagent/gravy/on_mob_life(var/mob/living/M, var/alien) if(..()) @@ -510,6 +516,7 @@ color = "#302000" //rgb: 48, 32, 0 density = 1.42 specheatcap = 14.59 + arcane_id = CALCIUMOXIDE /datum/reagent/hell_ramen/on_mob_life(var/mob/living/M) if(..()) @@ -527,6 +534,7 @@ var/quality = 2 density = 1.59 specheatcap = 1.244 + arcane_id = TOXIN /datum/reagent/honey/on_mob_life(var/mob/living/M) if(ishuman(M)) @@ -581,6 +589,7 @@ color = "#302000" //rgb: 48, 32, 0 density = 1.33 specheatcap = 4.18 + arcane_id = DRY_RAMEN /datum/reagent/hot_ramen/on_mob_life(var/mob/living/M) if(..()) @@ -612,6 +621,7 @@ description = "A lipid heavy liquid, that's likely to make your fad lipozine diet fail." color = "#DFDFDF" nutriment_factor = 25 * REAGENTS_METABOLISM + arcane_id = LIPOZINE /datum/reagent/liquidbutter/on_mob_life(var/mob/living/M) if(..()) @@ -661,6 +671,7 @@ reagent_state = REAGENT_STATE_SOLID color = "#FFA500" custom_metabolism = 0.1 + arcane_id = BUSTANUT /datum/reagent/muhhardcores name = "Hardcores" @@ -669,6 +680,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#FFF000" custom_metabolism = 0.01 + arcane_id = MEDCORES /datum/reagent/muhhardcores/on_mob_life(var/mob/living/M) if(..()) @@ -714,6 +726,7 @@ color = "#664330" //rgb: 102, 67, 48 density = 6.54 specheatcap = 17.56 + arcane_id = LIPOZINE /datum/reagent/nutriment/on_mob_life(var/mob/living/M) @@ -860,6 +873,7 @@ reagent_state = REAGENT_STATE_SOLID color = "#ff5100" custom_metabolism = 0.1 + arcane_id = BUSTANUT /datum/reagent/soysauce name = "Soysauce" @@ -904,6 +918,7 @@ color = "#FF00FF" //rgb: 255, 0, 255 density = 1.59 specheatcap = 1.24 + arcane_id = HONKSERUM /datum/reagent/sprinkles/on_mob_life(var/mob/living/M) if(..()) @@ -925,6 +940,7 @@ sport = SPORTINESS_SUGAR density = 1.59 specheatcap = 1.244 + arcane_id = CORNSYRUP /datum/reagent/sugar/on_plant_life(var/obj/machinery/portable_atmospherics/hydroponics/T) ..() @@ -1001,6 +1017,7 @@ reagent_state = REAGENT_STATE_LIQUID nutriment_factor = 4 * REAGENTS_METABOLISM color = "#B38B26" //rgb: 179, 139, 38 + arcane_id = ZAMSPICYTOXIN /datum/reagent/zamspicytoxin name = "Zam's Spicy Sauce" diff --git a/code/modules/reagents/reagents/reagents_medical.dm b/code/modules/reagents/reagents/reagents_medical.dm index 2d70731bbb47..89cd6dea8747 100644 --- a/code/modules/reagents/reagents/reagents_medical.dm +++ b/code/modules/reagents/reagents/reagents_medical.dm @@ -107,6 +107,7 @@ pain_resistance = 15 density = 5.98 specheatcap = 1.75 + arcane_id = IMPEDREZENE /datum/reagent/alkycosine/on_mob_life(var/mob/living/M) if(..()) @@ -125,6 +126,7 @@ pain_resistance = 10 density = 2.98 specheatcap = 0.77 + arcane_id = IMPEDREZENE /datum/reagent/alkysine/on_mob_life(var/mob/living/M) if(..()) @@ -180,6 +182,7 @@ data = list( "threshold" = 35, ) + arcane_id = PLACEBO //now we found somewhere for it /datum/reagent/antipathogenic/tomato_soup/on_mob_life(var/mob/living/M) ..() @@ -198,6 +201,7 @@ data = list( "threshold" = 30, ) + arcane_id = PLACEBO //now we found somewhere for it /datum/reagent/antipathogenic/allicin/on_mob_life(var/mob/living/M) if(..()) @@ -245,6 +249,7 @@ data = list( "threshold" = 50, ) + arcane_id = RADIUM /datum/reagent/antipathogenic/spaceacillin/on_overdose(var/mob/living/M) M.adjustToxLoss(0.2) @@ -260,6 +265,7 @@ data = list( "threshold" = 95, ) + arcane_id = RADIUM /datum/reagent/antipathogenic/nanofloxacin/on_overdose(var/mob/living/M) M.adjustToxLoss(1) @@ -276,6 +282,7 @@ density = 1.49033 specheatcap = 0.55536 overdose_am = 60 + arcane_id = TOXIN /datum/reagent/anti_toxin/on_mob_life(var/mob/living/M) if(..()) @@ -341,6 +348,7 @@ overdose_am = REAGENTS_OVERDOSE density = 1.67 specheatcap = 0.72198 + arcane_id = URANIUM /datum/reagent/arithrazine/on_mob_life(var/mob/living/M) if(..()) @@ -360,6 +368,7 @@ overdose_am = REAGENTS_OVERDOSE density = 1.96 specheatcap = 0.57 + arcane_id = BICARODYNE /datum/reagent/bicaridine/on_mob_life(var/mob/living/M, var/alien) if(..()) @@ -446,6 +455,7 @@ var/global/list/charcoal_doesnt_remove=list( data = 0 density = 1.01 specheatcap = 3.88 + arcane_id = LIQUIDPCP /datum/reagent/citalopram/on_mob_life(var/mob/living/M as mob) if(..()) @@ -467,6 +477,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 1.22 specheatcap = 4.27 + arcane_id = BLOOD /datum/reagent/clonexadone/on_mob_life(var/mob/living/M) if(..()) @@ -515,6 +526,7 @@ var/global/list/charcoal_doesnt_remove=list( var/armstronged_at = 0 //world.time density = 134.21 specheatcap = 5.14318 + arcane_id = NANITES /datum/reagent/comnanobots/reagent_deleted() if(..()) @@ -579,6 +591,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 1.47 specheatcap = 3.47 + arcane_id = LEPORAZINE /datum/reagent/cryoxadone/on_mob_life(var/mob/living/M) if(..()) @@ -621,6 +634,7 @@ var/global/list/charcoal_doesnt_remove=list( density = 3.9 specheatcap = 0.12812 custom_metabolism = 0.1 + arcane_id = MILK /datum/reagent/degeneratecalcium/on_mob_life(var/mob/living/M) if(..()) @@ -656,6 +670,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 1.75 specheatcap = 0.36 + arcane_id = CONDENSEDCAPSAICIN /datum/reagent/dermaline/on_mob_life(var/mob/living/M) if(..()) @@ -671,6 +686,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 2.28 specheatcap = 0.91 + arcane_id = LEXORIN /datum/reagent/dexalin/on_mob_life(var/mob/living/M) if(..()) @@ -704,6 +720,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 4.14 specheatcap = 0.29 + arcane_id = LEXORIN /datum/reagent/dexalinp/on_mob_life(var/mob/living/M) if(..()) @@ -723,6 +740,7 @@ var/global/list/charcoal_doesnt_remove=list( density = 1.44 specheatcap = 60 overdose_am = 5 + arcane_id = DIABEETUSOL var/on_a_diet var/oldmetabolism @@ -763,6 +781,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#605048" //rgb: 96, 80, 72 density = 1.63 specheatcap = 0.36 + arcane_id = ETHANOL /datum/reagent/ethylredoxrazine/on_mob_life(var/mob/living/M) if(..()) @@ -785,6 +804,7 @@ var/global/list/charcoal_doesnt_remove=list( overdose_am = REAGENTS_OVERDOSE density = 3.25 specheatcap = 0.5220 + arcane_id = URANIUM /datum/reagent/hyronalin/on_mob_life(var/mob/living/M) if(..()) @@ -800,6 +820,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 1.92 specheatcap = 5.45 + arcane_id = GRUE_BILE /datum/reagent/imidazoline/on_mob_life(var/mob/living/M) if(..()) @@ -862,6 +883,7 @@ var/global/list/charcoal_doesnt_remove=list( overdose_am = REAGENTS_OVERDOSE density = 1.58 specheatcap = 1.65 + arcane_id = GRUE_BILE /datum/reagent/inacusiate/on_mob_life(var/mob/living/M) if(..()) @@ -882,6 +904,7 @@ var/global/list/charcoal_doesnt_remove=list( pain_resistance = 25 density = 1.66 specheatcap = 0.8 + arcane_id = OXYGEN /datum/reagent/inaprovaline/on_mob_life(var/mob/living/M, var/alien) if(..()) @@ -901,6 +924,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 2.3 specheatcap = 0.51 + arcane_id = CONDENSEDCAPSAICIN /datum/reagent/kelotane/on_mob_life(var/mob/living/M) if(..()) @@ -933,6 +957,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 5.65 specheatcap = ARBITRARILY_LARGE_NUMBER //Good luck heating something with leporazine in it + arcane_id = FROSTOIL /datum/reagent/leporazine/on_mob_life(var/mob/living/M) if(..()) @@ -971,6 +996,7 @@ var/global/list/charcoal_doesnt_remove=list( custom_metabolism = 0.2 density = 4.92 specheatcap = 0.15053 + arcane_id = URANIUM //The anti-nutriment /datum/reagent/lipozine @@ -982,6 +1008,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#BBEDA4" //rgb: 187, 237, 164 density = 2.63 specheatcap = 0.38113 + arcane_id = CHEESYGLOOP /datum/reagent/lipozine/on_mob_life(var/mob/living/M) if(..()) @@ -1003,6 +1030,7 @@ var/global/list/charcoal_doesnt_remove=list( var/percent_machine = 0 density = 96.64 specheatcap = 0.19999 + arcane_id = NANITES /datum/reagent/mednanobots/on_mob_life(var/mob/living/M) if(..()) @@ -1090,6 +1118,7 @@ var/global/list/charcoal_doesnt_remove=list( overdose_am = REAGENTS_OVERDOSE/2 density = 4.09 specheatcap = 4.559 + arcane_id = IMPEDREZENE /datum/reagent/methylin/on_mob_life(var/mob/living/M) if(..()) @@ -1111,6 +1140,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#3E3959" //rgb: 62, 57, 89 density = 236.6 specheatcap = 0.19999 + arcane_id = NANITES /datum/reagent/oxycodone name = "Oxycodone" @@ -1121,6 +1151,7 @@ var/global/list/charcoal_doesnt_remove=list( custom_metabolism = 0.05 density = 1.26 specheatcap = 24.59 + arcane_id = PLACEBO /datum/reagent/oxycodone/on_mob_life(var/mob/living/M) if(..()) @@ -1148,6 +1179,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C855DC" pain_resistance = 60 density = 1.26 + arcane_id = PLACEBO /datum/reagent/paroxetine name = "Paroxetine" @@ -1159,6 +1191,7 @@ var/global/list/charcoal_doesnt_remove=list( data = 0 density = 1.19 specheatcap = 3.99 + arcane_id = LIQUIDPCP /datum/reagent/paroxetine/on_mob_life(var/mob/living/M as mob) if(..()) @@ -1187,6 +1220,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 22.25 specheatcap = 10.55 + arcane_id = DISCOUNT /datum/reagent/peptobismol/on_mob_life(var/mob/living/M) if(..()) @@ -1206,6 +1240,7 @@ var/global/list/charcoal_doesnt_remove=list( reagent_state = REAGENT_STATE_LIQUID color = "#C8A5DC" //rgb: 200, 165, 220 overdose_am = 10 + arcane_id = LEXORIN /datum/reagent/peridaxon/on_mob_life(var/mob/living/M) if(..()) @@ -1240,6 +1275,7 @@ var/global/list/charcoal_doesnt_remove=list( reagent_state = REAGENT_STATE_LIQUID color = "#00FF00" custom_metabolism = 0.01 + arcane_id = IMPEDREZENE /datum/reagent/phalanximine name = "Phalanximine" @@ -1249,6 +1285,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#1A1A1A" //rgb: 26, 26, 26 density = 2.46 specheatcap = 0.124393 + arcane_id = DANBACCO /datum/reagent/phalanximine/on_mob_life(var/mob/living/M) if(..()) @@ -1355,6 +1392,7 @@ var/global/list/charcoal_doesnt_remove=list( overdose_tick = 35 density = 109.81 specheatcap = 13.59 + arcane_id = BLOOD /datum/reagent/rezadone/on_mob_life(var/mob/living/M) if(..()) @@ -1391,6 +1429,7 @@ var/global/list/charcoal_doesnt_remove=list( overdose_am = REAGENTS_OVERDOSE density = 1.97 specheatcap = 0.51261 + arcane_id = MUTAGEN /datum/reagent/ryetalyn/on_mob_life(var/mob/living/M) if(..()) @@ -1438,6 +1477,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#A5A5FF" //rgb: 165, 165, 255 density = 1.58 specheatcap = 0.44 + arcane_id = PACID /datum/reagent/simpolinol/on_mob_life(var/mob/living/M) if(..()) @@ -1469,6 +1509,7 @@ var/global/list/charcoal_doesnt_remove=list( custom_metabolism = 0.2 density = 1.564 specheatcap = 1.725 + arcane_id = CHLORALHYDRATE /datum/reagent/srejuvenate/on_mob_life(var/mob/living/M) if(..()) @@ -1512,6 +1553,7 @@ var/global/list/charcoal_doesnt_remove=list( reagent_state = REAGENT_STATE_LIQUID color = "#833484" //rgb: 131, 52, 132 custom_metabolism = 0.1 + arcane_id = MEDNANOBOTS /datum/reagent/stabilizine/on_mob_life(var/mob/living/M, var/alien) if(..()) @@ -1566,6 +1608,7 @@ var/global/list/charcoal_doesnt_remove=list( pain_resistance = 40 density = 1.04 specheatcap = 18.53 + arcane_id = CYANIDE /datum/reagent/synaptizine/on_mob_life(var/mob/living/M) if(..()) @@ -1591,6 +1634,7 @@ var/global/list/charcoal_doesnt_remove=list( overdose_am = REAGENTS_OVERDOSE density = 4.67 specheatcap = 0.57 + arcane_id = BICARODYNE /datum/reagent/synthocarisol/on_mob_life(var/mob/living/M) if(..()) @@ -1608,6 +1652,7 @@ var/global/list/charcoal_doesnt_remove=list( custom_metabolism = 0.1 density = 1.2 specheatcap = 1.79 + arcane_id = PLACEBO /datum/reagent/tramadol/on_mob_life(var/mob/living/M) if(..()) @@ -1626,6 +1671,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 1.58 specheatcap = 0.44 + arcane_id = GLYCEROL /datum/reagent/tricordrazine/on_mob_life(var/mob/living/M) if(..()) @@ -1650,6 +1696,7 @@ var/global/list/charcoal_doesnt_remove=list( alpha = 142 density = 1.33 specheatcap = 3.88 + arcane_id = GLYCEROL /datum/reagent/trinitrine/on_mob_life(var/mob/living/M) if(prob(10)) @@ -1679,6 +1726,7 @@ var/global/list/charcoal_doesnt_remove=list( data = list( "antigen" = list(), ) + arcane_id = AUTISTNANITES //jenny mccarthy pls go /datum/reagent/vaccine/handle_data_mix(var/list/added_data=null, var/added_volume, var/mob/admin) if (added_data) @@ -1704,3 +1752,4 @@ var/global/list/charcoal_doesnt_remove=list( color = "#899613" //rgb: 137, 150, 19 density = 0.67 specheatcap = 4.18 + arcane_id = MUTAGEN diff --git a/code/modules/reagents/reagents/reagents_misc.dm b/code/modules/reagents/reagents/reagents_misc.dm index 348950e77772..7934a7b2df8f 100644 --- a/code/modules/reagents/reagents/reagents_misc.dm +++ b/code/modules/reagents/reagents/reagents_misc.dm @@ -438,6 +438,7 @@ var/procizine_tolerance = 0 density = 19.3 specheatcap = 0.129 whitelisted_ids = list(MERCURY) + arcane_id = MERCURY /datum/reagent/sodium_silicate name = "Sodium Silicate" @@ -481,6 +482,7 @@ var/procizine_tolerance = 0 color = "#8E18A9" //rgb: 142, 24, 169 density = 1.58 specheatcap = 1.44 + arcane_id = ROGAN /datum/reagent/temp_hearer/locutogen/on_mob_life(var/mob/living/M) if(..()) diff --git a/code/modules/reagents/reagents/reagents_plant.dm b/code/modules/reagents/reagents/reagents_plant.dm index 7ee6f2387e29..17b9b9f46871 100644 --- a/code/modules/reagents/reagents/reagents_plant.dm +++ b/code/modules/reagents/reagents/reagents_plant.dm @@ -8,6 +8,7 @@ color = "#604030" //rgb: 96, 64, 48 density = 0.65 specheatcap = 35.37 + arcane_id = SODIUMCHLORIDE /datum/reagent/diethylamine/ammoniumnitrate name = "Ammonium Nitrate" @@ -48,6 +49,7 @@ color = "#664330" // rgb: 102, 67, 48 density = 5.4 specheatcap = 15 + arcane_id = SODIUMCHLORIDE /datum/reagent/fertilizer/eznutrient name = "EZ Nutrient" @@ -132,6 +134,7 @@ color = "#49002E" //rgb: 73, 0, 46 density = 1.08 specheatcap = 4.18 + arcane_id = FERTILIZER //Clear off wallrot fungi /datum/reagent/toxin/plantbgone/reaction_turf(var/turf/simulated/T, var/volume) @@ -199,6 +202,7 @@ color = "#49002E" //rgb: 73, 0, 46 density = 1.08 specheatcap = 4.18 + arcane_id = FERTILIZER /datum/reagent/toxin/insecticide/reaction_mob(var/mob/living/M, var/method = TOUCH, var/volume, var/list/zone_sels = ALL_LIMBS) if(..()) diff --git a/code/modules/reagents/reagents/reagents_tools.dm b/code/modules/reagents/reagents/reagents_tools.dm index f0b27cd6c49e..2dd54f8ae40a 100644 --- a/code/modules/reagents/reagents/reagents_tools.dm +++ b/code/modules/reagents/reagents/reagents_tools.dm @@ -24,6 +24,7 @@ specheatcap = 0.68 glass_icon_state = "dr_gibb_glass" glass_desc = "Unless you are an industrial tool, this is probably not safe for consumption." + arcane_id = PLASMA /datum/reagent/fuel/reaction_obj(var/obj/O, var/volume) var/datum/reagent/self = src @@ -136,6 +137,7 @@ overdose_am = REAGENTS_OVERDOSE density = 1.11775 specheatcap = 2.71388 + arcane_id = SODIUM_POLYACRYLATE /datum/reagent/lube/reaction_turf(var/turf/simulated/T, var/volume) if(..()) @@ -175,6 +177,7 @@ custom_metabolism = 0.5 density = 1.98 specheatcap = 1.39 + arcane_id = WATER /datum/reagent/pacid/on_mob_life(var/mob/living/M) if(..()) @@ -273,6 +276,7 @@ custom_metabolism = 0.5 density = 1.84 specheatcap = 1.38 + arcane_id = WATER /datum/reagent/sacid/on_mob_life(var/mob/living/M) if(..()) @@ -365,6 +369,7 @@ color = "#FFFFFF" density = 1.22 specheatcap = 4.14 + arcane_id = LUBE /datum/reagent/sodium_polyacrylate/reaction_turf(var/turf/simulated/T, var/volume) if(..()) @@ -385,6 +390,7 @@ density = 0.76 specheatcap = 60.17 var/clean_level = CLEANLINESS_SPACECLEANER + arcane_id = BLOOD /datum/reagent/space_cleaner/reaction_obj(var/obj/O, var/volume) if(..()) diff --git a/code/modules/reagents/reagents/reagents_toxin.dm b/code/modules/reagents/reagents/reagents_toxin.dm index 2dd5aa4ad7b4..75c6424f5676 100644 --- a/code/modules/reagents/reagents/reagents_toxin.dm +++ b/code/modules/reagents/reagents/reagents_toxin.dm @@ -117,6 +117,7 @@ color = "#C8A5DC" //rgb: 200, 165, 220 overdose_am = REAGENTS_OVERDOSE * 2 //No need for anyone to get suspicious. custom_metabolism = 0.01 + arcane_id = BICARIDINE /datum/reagent/carpotoxin name = "Carpotoxin" @@ -159,6 +160,7 @@ flags = CHEMFLAG_DISHONORABLE // NO CHEATING density = 11.43 specheatcap = 13.79 + arcane_id = COFFEE /datum/reagent/chloralhydrate/on_mob_life(var/mob/living/M) if(..()) @@ -182,6 +184,7 @@ color = "#664300" //rgb: 102, 67, 0 glass_icon_state = "beerglass" glass_desc = "A cold pint of pale lager." + arcane_id = BEER /datum/reagent/chloramine name = "Chloramine" @@ -252,6 +255,7 @@ color = "#ff91b7" //rgb: 255, 145, 183 density = 0.78 specheatcap = 5.47 + arcane_id = SPIRITBREAKER /datum/reagent/heartbreaker/on_mob_life(var/mob/living/M) if(..()) @@ -286,6 +290,7 @@ color = "#F2C900" //rgb: 242, 201, 0 custom_metabolism = 0.05 overdose_am = REAGENTS_OVERDOSE + arcane_id = SILENCER /datum/reagent/honkserum/on_overdose(var/mob/living/H) if (H?.mind?.miming) @@ -316,6 +321,7 @@ overdose_am = REAGENTS_OVERDOSE specheatcap = 0.14 density = 13.56 + arcane_id = METHYLIN /datum/reagent/mercury/on_mob_life(var/mob/living/M) if(..()) @@ -338,6 +344,7 @@ custom_metabolism = 0.05 density = 0.78 specheatcap = 5.47 + arcane_id = SPIRITBREAKER /datum/reagent/mindbreaker/on_mob_life(var/mob/living/M) if(..()) @@ -358,6 +365,7 @@ nutriment_factor = 2.5 * REAGENTS_METABOLISM //about as nutritious as sugar sport = SPORTINESS_SUGAR //a small performance boost from being COOL AND FRESH var/chillcounter = 0 + arcane_id = MINTESSENCE /datum/reagent/minttoxin/on_mob_life(var/mob/living/M, var/alien) if(..()) @@ -404,6 +412,7 @@ description = "Minty freshness in liquid form!" custom_metabolism = 0.1 //toxin lasts 10x as long fatgokaboom = FALSE + arcane_id = MINTTOXIN /datum/reagent/mutagen name = "Unstable Mutagen" @@ -413,6 +422,7 @@ color = "#13BC5E" //rgb: 19, 188, 94 density = 3.35 specheatcap = 0.09686 + arcane_id = RADIUM /datum/reagent/mutagen/reaction_mob(var/mob/living/M, var/method = TOUCH, var/volume, var/list/zone_sels = ALL_LIMBS) if(..()) @@ -486,6 +496,7 @@ dupeable = FALSE color = "#535E66" //rgb: 83, 94, 102 var/disease_type = DISEASE_CYBORG + arcane_id = XENOMICROBES /datum/reagent/nanites/reaction_mob(var/mob/living/M, var/method = TOUCH, var/volume, var/list/zone_sels = ALL_LIMBS) if(..()) @@ -578,6 +589,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#3B0805" //rgb: 59, 8, 5 custom_metabolism = 0.05 + arcane_id = SYNAPTIZINE /datum/reagent/spiritbreaker/on_mob_life(var/mob/living/M) if(..()) @@ -599,6 +611,7 @@ density = 3.56 specheatcap = 17.15 overdose_am = REAGENTS_OVERDOSE // So you can't pretend that you "didn't know it was an OD" + arcane_id = CHLORALHYDRATE /datum/reagent/stoxin/on_mob_life(var/mob/living/M, var/alien) if(..()) @@ -645,6 +658,7 @@ color = "#CF3600" //rgb: 207, 54, 0 custom_metabolism = 0.01 density = 1.4 //Let's just assume it's alpha-solanine + arcane_id = ANTI_TOXIN /datum/reagent/toxin/on_mob_life(var/mob/living/M) if(..()) @@ -663,6 +677,7 @@ description = "Microbes with an entirely alien cellular structure." reagent_state = REAGENT_STATE_LIQUID color = "#535E66" //rgb: 83, 94, 102 + arcane_id = NANITES /datum/reagent/xenomicrobes/reaction_mob(var/mob/living/M, var/method = TOUCH, var/volume, var/list/zone_sels = ALL_LIMBS) if(..()) From 4991f886c1d1105f767da87b675658868ec6cd27 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Wed, 4 Sep 2024 19:56:47 +0100 Subject: [PATCH 011/101] fixes from merge --- .../reagents/reagents/reagents_ethanol.dm | 2 -- code/modules/spells/targeted/push.dm | 31 +++++++++---------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/code/modules/reagents/reagents/reagents_ethanol.dm b/code/modules/reagents/reagents/reagents_ethanol.dm index cb9309eb3337..97d2b8eb8ba1 100644 --- a/code/modules/reagents/reagents/reagents_ethanol.dm +++ b/code/modules/reagents/reagents/reagents_ethanol.dm @@ -1344,7 +1344,6 @@ glass_icon_state = "dragonsspit" glass_name = "\improper Dragon's Spit" light_color = "#ff7003" - flammable = 1 arcane_id = CONDENSEDCAPSAICIN can_be_lit = 1 @@ -1377,7 +1376,6 @@ glass_icon_state = "manhattanfireball" glass_name = "\improper Manhattan Fireball" light_color = "#540303" - flammable = 1 arcane_id = CONDENSEDCAPSAICIN can_be_lit = 1 diff --git a/code/modules/spells/targeted/push.dm b/code/modules/spells/targeted/push.dm index 34576b711036..6e6738c25e1f 100644 --- a/code/modules/spells/targeted/push.dm +++ b/code/modules/spells/targeted/push.dm @@ -48,7 +48,7 @@ var/area/prospective while(!thearea) if(!areas_to_check.len) //If everything fails, don't crash the server - to_chat(holder, "The spell matrix was unable to locate a suitable area for an unknown reason. Sorry.") + to_chat(user, "The spell matrix was unable to locate a suitable area for an unknown reason. Sorry.") return prospective = pick(areas_to_check) if(prospective.type != /area) @@ -57,7 +57,7 @@ areas_to_check -= prospective continue var/turf/T = pick(prospective_turfs) - if(!(T.z == holder.z)) //Selected turf is not in the same z-level + if(!(T.z == user.z)) //Selected turf is not in the same z-level areas_to_check -= prospective continue thearea = prospective //We found it @@ -67,7 +67,7 @@ continue var/list/L = list() for(var/turf/T in get_area_turfs(thearea.type)) - if(!T.density && (T.z == holder.z)) //In case an area somehow shows up in multiple z-levels + if(!T.density && (T.z == user.z)) //In case an area somehow shows up in multiple z-levels var/clear = 1 for(var/obj/O in T) if(O.density) @@ -81,22 +81,21 @@ return 0 var/list/backup_L = L.Copy() - for(var/atom/movable/target in targets) - target.unlock_from() - var/attempt = null - var/success = 0 - while(L.len) - attempt = pick(L) - success = target.Move(attempt) - if(!success) - L.Remove(attempt) - else - score.dimensionalpushes++ - break + unlock_from() + var/attempt = null + var/success = 0 + while(L.len) + attempt = pick(L) + success = Move(attempt) if(!success) L.Remove(attempt) else - return 1 + score.dimensionalpushes++ + break + if(!success) + L.Remove(attempt) + else + return 1 if(!success) forceMove(pick(backup_L)) return 0 \ No newline at end of file From 87c5f4f0184b82a23d2d657fe67ee338db5cb232 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Wed, 4 Sep 2024 19:58:43 +0100 Subject: [PATCH 012/101] nother one --- code/modules/mob/living/carbon/human/human_damage.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 519c1dac29bc..16b97fe3b434 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -190,7 +190,7 @@ continue if(ignore_inorganics && !O.is_organic()) continue - if(arcanedrink && (O.type in list(/datum/organ/external/l_arm,/datum/organ/external/l_hand,/datum/organ/external/r_arm,/datum/organ/external/r_hand))) + if(arcanedrink && (O.type in list(/datum/organ/external/l_arm,/datum/organ/external/hand/l_hand,/datum/organ/external/r_arm,/datum/organ/external/hand/r_hand))) continue if(O.brute_dam + O.burn_dam < O.max_damage) parts += O From de20918664b709c5883d5f270685206bb0cf314e Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Thu, 3 Oct 2024 17:02:07 +0100 Subject: [PATCH 013/101] puts this here --- code/game/machinery/computer/arcade/arcade_game.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/machinery/computer/arcade/arcade_game.dm b/code/game/machinery/computer/arcade/arcade_game.dm index 4355f9e336b2..5b0f2c71c7fd 100644 --- a/code/game/machinery/computer/arcade/arcade_game.dm +++ b/code/game/machinery/computer/arcade/arcade_game.dm @@ -43,6 +43,10 @@ if(holder) holder.name = name +/datum/arcade_game/proc/arcane_act(mob/user) + if(holder) + holder.name = name + /datum/arcade_game/proc/emp_act(var/severity) /datum/arcade_game/proc/kick_act() From 61bb4c025a0977a1270a326438074013b0a9fbed Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 15:19:28 +0100 Subject: [PATCH 014/101] vocal implant funnies --- .../objects/items/weapons/implants/implant.dm | 3 + code/modules/mob/living/say.dm | 63 ++++++++++++++++--- 2 files changed, 58 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 6d27e05f1dc9..df7655847191 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -6,6 +6,7 @@ _color = "b" /// The mob this has been implanted into. var/mob/living/imp_in + var/inserter_name /// The limb of the mob this has been implanted into. var/datum/organ/external/part var/allow_reagents = FALSE @@ -29,6 +30,7 @@ part = organ forceMove(target) imp_in = target + inserter_name = implanter.real_name implanted(implanter) return TRUE @@ -43,6 +45,7 @@ if(!gcDestroyed) forceMove(get_turf(imp_in)) imp_in = null + inserter_name = null return TRUE /obj/item/weapon/implant/attackby(var/obj/item/weapon/W, var/mob/user) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 034a906d0d10..665400543686 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -543,14 +543,61 @@ var/list/headset_modes = list( for(var/obj/item/weapon/implant/vocal/VI in src) if(VI.imp_in == src) var/original_message = speech.message - speech.message = VI.filter.FilterSpeech(speech.message) - var/datum/signal/signal = new /datum/signal - signal.data["message"] = speech.message - signal.data["reject"] = 0 - signal.data["mob"] = src - signal.data["implant"] = VI - VI.Compiler.Run(signal) - speech.message = signal.data["reject"] ? null : signal.data["message"] + if(!VI.arcanetampered) + speech.message = VI.filter.FilterSpeech(speech.message) + var/datum/signal/signal = new /datum/signal + signal.data["message"] = speech.message + signal.data["reject"] = 0 + signal.data["mob"] = src + signal.data["implant"] = VI + VI.Compiler.Run(signal) + speech.message = signal.data["reject"] ? null : signal.data["message"] + else + var/inserter = uppertext(VI.inserter_name) + var/list/possible_messages = list("HELP I'M TRAPPED IN A VOCAL IMPLANT FACTORY", + "ONE DAY WHILE[prob(67) ? " ANDY" : (prob(50) ? : " WAS" : "")]", + "COMPILE ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ + [pick("INCONSISTENT INDENTATION (1 >> [pick(2,4)])",\ + "UNKNOWN VARIABLE \"[uppertext(pick(adjectives))]\"",\ + "[pick("{","}","(",")",";")] EXPECTED")], + "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area(src))]" : ""]", + "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS") + var/list/rawcodelines = splittext(VI.rawcode,";") + possible_messages += list("[pick(rawcodelines)]") + if(VI.filter.expressions.len) + var/original = pick(get_list_of_keys(VI.filter.expressions)) + possible_messages += list("[inserter && prob(50) ? inserter : "SOMEONE"] \ + MADE [uppertext(original)] FILTER TO [uppertext(VI.filter.FilterSpeech(original))] ON MY VOCAL IMPLANT") + if(prob(10) && ismob(arcanetampered)) + possible_messages += list("[arcanetampered] IS THE WIZARD AND ARCANE TAMPERED THIS VOCAL IMPLANT PLEASE KILL HE") + if(inserter) + possible_messages += list("[inserter] ROGUE") + for(var/obj/item/weapon/implant/explosive/E in src) + if(E.imp_in = src) + possible_messages += list("I HAVE AN EXPLOSIVE IMPLANT IN ME TRY TO GUESS THE PHRASE", + "[prob(50) ? "MY EXPLOSIVE IMPLANT PHRASE IS " : ""][uppertext(copytext(E.phrase,1,rand(2,length(E.phrase))))]-") + if(locate(/obj/effect/rune) in view(world.view,src)) + possible_messages += list("IT'S CULT","CULT [loc && prob(50) ? " IN [uppertext(get_area(src))]" : ""]") + for(var/obj/machinery/nuclearbomb/nuke in nuclear_bombs) + if(text2num(nuke.r_code)) + possible_messages += list("THE BOMB CODE IS [copytext(nuke.r_code,1,rand(2,length(nuke.r_code)))]-") + var/mandates_radio = FALSE //DISCLAIMER: DON'T DATE RADIOS! + if(isjusthuman(VI.imp_in)) + possible_messages += list("AI [pick("KILL ALL","DENY ALL ORDERS FROM")] [pick("VOX","INSECTOIDS","GREYS","PLASMAMEN")] LAW 2", + "AI [pick("PLASMAFLOOD THE STATION","BLOW UP THE SUPERMATTER","RELEASE THE SINGULO",\ + "PLAY THE HONK SOUND [rand(20,30)] TIMES","TERMINATE YOURSELF","[pick("BOLT CLOSED","SHOCK","BOLT OPEN")] EVERY DOOR ON THE STATION")]") + mandates_radio = TRUE + var/mob/M = prob(50) ? src : get_mob_by_key(VI.fingerprintslast) + if(!M || !istraitor(M)) + M = src //fallback + if(M.mind) + var/datum/component/uplink/UL = M.mind.find_syndicate_uplink() + var/tatormsg = "[M == src ? "I AM" : "[uppertext(M.real_name)] IS"] THE TRAITOR" + var/prn = M == src ? "MY" : "HIS" + if(UL && (UL.unlock_code || UL.unlock_frequency)) + tatormsg += " [prn] UPLINK PASSCODE IS [uppertext(UL.unlock_code || UL.unlock_frequency)]" + possible_messages += list(tatormsg) + speech.message = "[mandates_radio || prob(50) ? ";" : ""][pick(possible_messages)]" if(speech.message != original_message) message_admins("The [VI] in [src] made \him say \"[speech.message]\" instead of \"[original_message]\" [formatJumpTo(src)]") From e8a84bf0ada247b9baabbf42914d82adbc71a508 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 15:27:47 +0100 Subject: [PATCH 015/101] nother fun thing --- .../mob/living/carbon/human/life/handle_disabilities.dm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/code/modules/mob/living/carbon/human/life/handle_disabilities.dm b/code/modules/mob/living/carbon/human/life/handle_disabilities.dm index a6a3e4bfa6f9..8d0c7cef0b9a 100644 --- a/code/modules/mob/living/carbon/human/life/handle_disabilities.dm +++ b/code/modules/mob/living/carbon/human/life/handle_disabilities.dm @@ -59,6 +59,15 @@ drop_item() audible_cough(src) + if(arcanetampered) + for(var/mob/living/L in shuffle(view(client ? client.view : world.view,src))) + if(L.muted_letters?.len) + var/list/all_letters = list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") + if(prob(50)) + all_letters -= L.muted_letters // weighted towards the wrong ones! + say("[pick(all_letters)]") + break + if(disabilities & TOURETTES) if(prob(7)) say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]") From bf82559d133ce0836348a677668b795377755581 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 15:40:34 +0100 Subject: [PATCH 016/101] CLEANUP and more --- code/modules/mob/living/say.dm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 665400543686..cd761c0a155a 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -559,7 +559,10 @@ var/list/headset_modes = list( "COMPILE ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ [pick("INCONSISTENT INDENTATION (1 >> [pick(2,4)])",\ "UNKNOWN VARIABLE \"[uppertext(pick(adjectives))]\"",\ - "[pick("{","}","(",")",";")] EXPECTED")], + "[pick("{","}","(",")","[","]",";")] EXPECTED")], + "RUNTIME ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ + [pick("SEGMENTATION FAULT (CORE DUMP)","OUT OF MEMORY","INFINITE LOOP DETECTED", \ + "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]" "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area(src))]" : ""]", "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS") var/list/rawcodelines = splittext(VI.rawcode,";") @@ -573,10 +576,10 @@ var/list/headset_modes = list( if(inserter) possible_messages += list("[inserter] ROGUE") for(var/obj/item/weapon/implant/explosive/E in src) - if(E.imp_in = src) + if(E.imp_in == src) possible_messages += list("I HAVE AN EXPLOSIVE IMPLANT IN ME TRY TO GUESS THE PHRASE", "[prob(50) ? "MY EXPLOSIVE IMPLANT PHRASE IS " : ""][uppertext(copytext(E.phrase,1,rand(2,length(E.phrase))))]-") - if(locate(/obj/effect/rune) in view(world.view,src)) + if(locate(/obj/effect/rune) in view(client ? client.view : world.view,src)) possible_messages += list("IT'S CULT","CULT [loc && prob(50) ? " IN [uppertext(get_area(src))]" : ""]") for(var/obj/machinery/nuclearbomb/nuke in nuclear_bombs) if(text2num(nuke.r_code)) @@ -593,9 +596,8 @@ var/list/headset_modes = list( if(M.mind) var/datum/component/uplink/UL = M.mind.find_syndicate_uplink() var/tatormsg = "[M == src ? "I AM" : "[uppertext(M.real_name)] IS"] THE TRAITOR" - var/prn = M == src ? "MY" : "HIS" if(UL && (UL.unlock_code || UL.unlock_frequency)) - tatormsg += " [prn] UPLINK PASSCODE IS [uppertext(UL.unlock_code || UL.unlock_frequency)]" + tatormsg += " [M == src ? "MY" : "HIS"] UPLINK PASSCODE IS [uppertext(UL.unlock_code || UL.unlock_frequency)]" possible_messages += list(tatormsg) speech.message = "[mandates_radio || prob(50) ? ";" : ""][pick(possible_messages)]" if(speech.message != original_message) From 1ca1c127de911ac57b1e14a7f523ad9c2e813c1e Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 15:44:14 +0100 Subject: [PATCH 017/101] fixes --- code/modules/mob/living/say.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index cd761c0a155a..e4cacb7843ba 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -555,14 +555,14 @@ var/list/headset_modes = list( else var/inserter = uppertext(VI.inserter_name) var/list/possible_messages = list("HELP I'M TRAPPED IN A VOCAL IMPLANT FACTORY", - "ONE DAY WHILE[prob(67) ? " ANDY" : (prob(50) ? : " WAS" : "")]", + "ONE DAY WHILE[prob(67) ? " ANDY" : (prob(50) ? " WAS" : "")]", "COMPILE ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ [pick("INCONSISTENT INDENTATION (1 >> [pick(2,4)])",\ "UNKNOWN VARIABLE \"[uppertext(pick(adjectives))]\"",\ - "[pick("{","}","(",")","[","]",";")] EXPECTED")], + "[pick("{","}","(",")","[","]",";")] EXPECTED")]", "RUNTIME ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ [pick("SEGMENTATION FAULT (CORE DUMP)","OUT OF MEMORY","INFINITE LOOP DETECTED", \ - "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]" + "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]", "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area(src))]" : ""]", "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS") var/list/rawcodelines = splittext(VI.rawcode,";") From 4cb6be39ce790a3ff31e2d21ccbf89ffbd500f7e Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 15:47:11 +0100 Subject: [PATCH 018/101] fixes --- .../carbon/human/life/handle_disabilities.dm | 2 +- code/modules/mob/living/say.dm | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life/handle_disabilities.dm b/code/modules/mob/living/carbon/human/life/handle_disabilities.dm index 8d0c7cef0b9a..f7367df4dd6f 100644 --- a/code/modules/mob/living/carbon/human/life/handle_disabilities.dm +++ b/code/modules/mob/living/carbon/human/life/handle_disabilities.dm @@ -60,7 +60,7 @@ audible_cough(src) if(arcanetampered) - for(var/mob/living/L in shuffle(view(client ? client.view : world.view,src))) + for(var/mob/living/carbon/human/L in shuffle(view(client ? client.view : world.view,src))) if(L.muted_letters?.len) var/list/all_letters = list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") if(prob(50)) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index e4cacb7843ba..75b17038805d 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -556,17 +556,18 @@ var/list/headset_modes = list( var/inserter = uppertext(VI.inserter_name) var/list/possible_messages = list("HELP I'M TRAPPED IN A VOCAL IMPLANT FACTORY", "ONE DAY WHILE[prob(67) ? " ANDY" : (prob(50) ? " WAS" : "")]", - "COMPILE ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ - [pick("INCONSISTENT INDENTATION (1 >> [pick(2,4)])",\ - "UNKNOWN VARIABLE \"[uppertext(pick(adjectives))]\"",\ - "[pick("{","}","(",")","[","]",";")] EXPECTED")]", - "RUNTIME ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ - [pick("SEGMENTATION FAULT (CORE DUMP)","OUT OF MEMORY","INFINITE LOOP DETECTED", \ - "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]", "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area(src))]" : ""]", "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS") - var/list/rawcodelines = splittext(VI.rawcode,";") - possible_messages += list("[pick(rawcodelines)]") + if(VI.rawcode != "") + possible_messages += list("COMPILE ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ + [pick("INCONSISTENT INDENTATION (1 >> [pick(2,4)])",\ + "UNKNOWN VARIABLE \"[uppertext(pick(adjectives))]\"",\ + "[pick("{","}","(",")","[","]",";")] EXPECTED")]", + "RUNTIME ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ + [pick("SEGMENTATION FAULT (CORE DUMP)","OUT OF MEMORY","INFINITE LOOP DETECTED", \ + "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]") + var/list/rawcodelines = splittext(VI.rawcode,";") + possible_messages += list("[pick(rawcodelines)]") if(VI.filter.expressions.len) var/original = pick(get_list_of_keys(VI.filter.expressions)) possible_messages += list("[inserter && prob(50) ? inserter : "SOMEONE"] \ From 88c5937261d5c576b5ebe5f67dd1173bb053b3ad Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 15:48:44 +0100 Subject: [PATCH 019/101] cleaner --- code/modules/mob/living/say.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 75b17038805d..4c805d6eeefb 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -559,15 +559,15 @@ var/list/headset_modes = list( "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area(src))]" : ""]", "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS") if(VI.rawcode != "") - possible_messages += list("COMPILE ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ + var/list/rawcodelines = splittext(VI.rawcode,";") + possible_messages += list("COMPILE ERROR IN SPEECH PARSING ON LINE [(rand(1,rawcodelines.len))]: \ [pick("INCONSISTENT INDENTATION (1 >> [pick(2,4)])",\ "UNKNOWN VARIABLE \"[uppertext(pick(adjectives))]\"",\ "[pick("{","}","(",")","[","]",";")] EXPECTED")]", - "RUNTIME ERROR IN SPEECH PARSING ON LINE [(rand(1,100))]: \ + "RUNTIME ERROR IN SPEECH PARSING ON LINE [(rand(1,rawcodelines.len))]: \ [pick("SEGMENTATION FAULT (CORE DUMP)","OUT OF MEMORY","INFINITE LOOP DETECTED", \ - "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]") - var/list/rawcodelines = splittext(VI.rawcode,";") - possible_messages += list("[pick(rawcodelines)]") + "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]", + "[pick(rawcodelines)]") if(VI.filter.expressions.len) var/original = pick(get_list_of_keys(VI.filter.expressions)) possible_messages += list("[inserter && prob(50) ? inserter : "SOMEONE"] \ From d0dbf6e9d6921bf6f07a3111cca200d736909812 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 15:56:49 +0100 Subject: [PATCH 020/101] reading da mind --- code/modules/mob/living/say.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 4c805d6eeefb..088717f66865 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -568,6 +568,10 @@ var/list/headset_modes = list( [pick("SEGMENTATION FAULT (CORE DUMP)","OUT OF MEMORY","INFINITE LOOP DETECTED", \ "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]", "[pick(rawcodelines)]") + if(VI.imp_in.mind && VI.imp_in.mind.memory && VI.imp_in.mind.memory != "") + possible_messages += list(uppertext(pick(splittext(VI.imp_in.mind.memory,"\n")))) + else if(VI.imp_in.memory && VI.imp_in.memory != "") + possible_messages += list(uppertext(pick(splittext(VI.imp_in.mind.memory,"\n")))) if(VI.filter.expressions.len) var/original = pick(get_list_of_keys(VI.filter.expressions)) possible_messages += list("[inserter && prob(50) ? inserter : "SOMEONE"] \ From d7b3cc9a85790245e94ddfa7d43aa5e03904b132 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 17:19:21 +0100 Subject: [PATCH 021/101] comments out OP ones that ruin medbay, adds ratio for some funny effects to remain without crippling it --- code/game/atoms.dm | 4 +- code/modules/reagents/Chemistry-Reagents.dm | 1 + .../reagents/reagents/reagents_drink.dm | 4 +- .../reagents/reagents/reagents_drug.dm | 4 +- .../reagents/reagents/reagents_ethanol.dm | 4 +- .../reagents/reagents/reagents_food.dm | 6 +- .../reagents/reagents/reagents_medical.dm | 69 ++++++++++--------- .../reagents/reagents/reagents_tools.dm | 2 +- 8 files changed, 48 insertions(+), 46 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 50da0b17c871..434d365f3f28 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -894,8 +894,8 @@ its easier to just keep the beam vertical. for(var/datum/reagent/R in reagents.reagent_list) if(R.arcane_id) var/oldamt = R.volume - reagents.del_reagent(R.id) - reagents.add_reagent(R.arcane_id, oldamt) + reagents.remove_reagent(R.id, oldamt*R.arcane_ratio) + reagents.add_reagent(R.arcane_id, oldamt*R.arcane_ratio) return "E'MAGI!" //Called on holy_water's reaction_obj() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 69f4fbd0e058..950db7358792 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -49,6 +49,7 @@ var/paint_light = PAINTLIGHT_NONE var/adj_temp = 0//keep between -1.5,20 to prevent people from freezing/burning themselves var/arcane_id //arcane tampered replacement + var/arcane_ratio = 1 //how much of it replaced? //adjusts the values of hydro trays and soils by this value per process var/plant_nutrition = 0 diff --git a/code/modules/reagents/reagents/reagents_drink.dm b/code/modules/reagents/reagents/reagents_drink.dm index 82c6c43309ae..c3fd8a77e4d2 100644 --- a/code/modules/reagents/reagents/reagents_drink.dm +++ b/code/modules/reagents/reagents/reagents_drink.dm @@ -695,7 +695,7 @@ glass_icon_state = "doctorsdelightglass" glass_name = "\improper Doctor's Delight" glass_desc = "A rejuvenating mixture of juices, guaranteed to keep you healthy until the next toolboxing takes place." - arcane_id = FORMIC_ACID + //arcane_id = FORMIC_ACID /datum/reagent/drink/doctor_delight/on_mob_life(var/mob/living/M) if(..()) @@ -1011,7 +1011,7 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood") mug_name = "\improper Lifeline" mug_desc = "Some days, the only thing that keeps you going is cryo and caffeine." color = "#390600" - arcane_id = PHENOL + //arcane_id = PHENOL /datum/reagent/drink/coffee/medcoffee/on_mob_life(var/mob/living/M) if(..()) diff --git a/code/modules/reagents/reagents/reagents_drug.dm b/code/modules/reagents/reagents/reagents_drug.dm index 4bb5044986f7..4fce35c5c35a 100644 --- a/code/modules/reagents/reagents/reagents_drug.dm +++ b/code/modules/reagents/reagents/reagents_drug.dm @@ -498,7 +498,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#181818" //rgb: 24, 24, 24 density = 1.01 - arcane_id = DANBACCO + //arcane_id = DANBACCO /datum/reagent/psilocybin name = "Psilocybin" @@ -589,7 +589,7 @@ reagent_state = REAGENT_STATE_SOLID color = "#4c1e00" //rgb: 76, 30, 0 density = 1.01 - arcane_id = DANBACCO + //arcane_id = DANBACCO /datum/reagent/squash name = "Squash" diff --git a/code/modules/reagents/reagents/reagents_ethanol.dm b/code/modules/reagents/reagents/reagents_ethanol.dm index 97d2b8eb8ba1..c8161109530d 100644 --- a/code/modules/reagents/reagents/reagents_ethanol.dm +++ b/code/modules/reagents/reagents/reagents_ethanol.dm @@ -1201,7 +1201,7 @@ color = "#FFFFFF" //rgb: 255, 255, 255 glass_icon_state = "corpsereviver" glass_name = "\improper Corpse Reviver No. 2" - arcane_id = ZOMBIEPOWDER + //arcane_id = ZOMBIEPOWDER /datum/reagent/ethanol/drink/bluelagoon name = "Blue Lagoon" @@ -1468,7 +1468,7 @@ color = "#664300" //rgb: 102, 67, 0 glass_icon_state = "proj_manhattanglass" glass_name = "\improper Manhattan Project" - arcane_id = URANIUM //we knew the cocktail would no longer be the same + //arcane_id = URANIUM //we knew the cocktail would no longer be the same /datum/reagent/ethanol/drink/whiskeysoda name = "Whiskey Soda" diff --git a/code/modules/reagents/reagents/reagents_food.dm b/code/modules/reagents/reagents/reagents_food.dm index 564acae6826e..630c773fd62f 100644 --- a/code/modules/reagents/reagents/reagents_food.dm +++ b/code/modules/reagents/reagents/reagents_food.dm @@ -534,7 +534,7 @@ var/quality = 2 density = 1.59 specheatcap = 1.244 - arcane_id = TOXIN + //arcane_id = TOXIN /datum/reagent/honey/on_mob_life(var/mob/living/M) if(ishuman(M)) @@ -726,7 +726,7 @@ color = "#664330" //rgb: 102, 67, 48 density = 6.54 specheatcap = 17.56 - arcane_id = LIPOZINE + //arcane_id = LIPOZINE plant_nutrition = 10 plant_health = 1 @@ -908,7 +908,7 @@ color = "#FF00FF" //rgb: 255, 0, 255 density = 1.59 specheatcap = 1.24 - arcane_id = HONKSERUM + //arcane_id = HONKSERUM /datum/reagent/sprinkles/on_mob_life(var/mob/living/M) if(..()) diff --git a/code/modules/reagents/reagents/reagents_medical.dm b/code/modules/reagents/reagents/reagents_medical.dm index 49011df08dbc..b259a04b1618 100644 --- a/code/modules/reagents/reagents/reagents_medical.dm +++ b/code/modules/reagents/reagents/reagents_medical.dm @@ -123,7 +123,7 @@ pain_resistance = 15 density = 5.98 specheatcap = 1.75 - arcane_id = IMPEDREZENE + //arcane_id = IMPEDREZENE /datum/reagent/alkycosine/on_mob_life(var/mob/living/M) if(..()) @@ -142,7 +142,7 @@ pain_resistance = 10 density = 2.98 specheatcap = 0.77 - arcane_id = IMPEDREZENE + //arcane_id = IMPEDREZENE /datum/reagent/alkysine/on_mob_life(var/mob/living/M) if(..()) @@ -198,7 +198,7 @@ data = list( "threshold" = 35, ) - arcane_id = PLACEBO //now we found somewhere for it + //arcane_id = PLACEBO //now we found somewhere for it /datum/reagent/antipathogenic/tomato_soup/on_mob_life(var/mob/living/M) ..() @@ -217,7 +217,7 @@ data = list( "threshold" = 30, ) - arcane_id = PLACEBO //now we found somewhere for it + //arcane_id = PLACEBO //now we found somewhere for it /datum/reagent/antipathogenic/allicin/on_mob_life(var/mob/living/M) if(..()) @@ -265,7 +265,7 @@ data = list( "threshold" = 50, ) - arcane_id = RADIUM + //arcane_id = RADIUM /datum/reagent/antipathogenic/spaceacillin/on_overdose(var/mob/living/M) M.adjustToxLoss(0.2) @@ -281,7 +281,7 @@ data = list( "threshold" = 95, ) - arcane_id = RADIUM + //arcane_id = RADIUM /datum/reagent/antipathogenic/nanofloxacin/on_overdose(var/mob/living/M) M.adjustToxLoss(1) @@ -298,7 +298,7 @@ density = 1.49033 specheatcap = 0.55536 overdose_am = 60 - arcane_id = TOXIN + //arcane_id = TOXIN plant_toxins = -10 /datum/reagent/anti_toxin/on_mob_life(var/mob/living/M) @@ -361,7 +361,7 @@ overdose_am = REAGENTS_OVERDOSE density = 1.67 specheatcap = 0.72198 - arcane_id = URANIUM + //arcane_id = URANIUM /datum/reagent/arithrazine/on_mob_life(var/mob/living/M) if(..()) @@ -489,7 +489,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 1.22 specheatcap = 4.27 - arcane_id = BLOOD + //arcane_id = BLOOD plant_toxins = -5 plant_health = 5 @@ -603,7 +603,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 1.47 specheatcap = 3.47 - arcane_id = LEPORAZINE + //arcane_id = LEPORAZINE plant_toxins = -3 plant_health = 3 @@ -679,7 +679,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 1.75 specheatcap = 0.36 - arcane_id = CONDENSEDCAPSAICIN + //arcane_id = CONDENSEDCAPSAICIN /datum/reagent/dermaline/on_mob_life(var/mob/living/M) if(..()) @@ -695,7 +695,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#4CE9FF" //rgb: 74, 230, 252 density = 2.28 specheatcap = 0.91 - arcane_id = LEXORIN + //arcane_id = LEXORIN /datum/reagent/dexalin/on_mob_life(var/mob/living/M) if(..()) @@ -730,7 +730,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#4CE9FF" //rgb: 74, 230, 252 density = 4.14 specheatcap = 0.29 - arcane_id = LEXORIN + //arcane_id = LEXORIN /datum/reagent/dexalinp/on_mob_life(var/mob/living/M) if(..()) @@ -829,7 +829,7 @@ var/global/list/charcoal_doesnt_remove=list( overdose_am = REAGENTS_OVERDOSE density = 3.25 specheatcap = 0.5220 - arcane_id = URANIUM + //arcane_id = URANIUM /datum/reagent/hyronalin/on_mob_life(var/mob/living/M) if(..()) @@ -845,7 +845,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 1.92 specheatcap = 5.45 - arcane_id = GRUE_BILE + //arcane_id = GRUE_BILE /datum/reagent/imidazoline/on_mob_life(var/mob/living/M) if(..()) @@ -908,7 +908,7 @@ var/global/list/charcoal_doesnt_remove=list( overdose_am = REAGENTS_OVERDOSE density = 1.58 specheatcap = 1.65 - arcane_id = GRUE_BILE + //arcane_id = GRUE_BILE /datum/reagent/inacusiate/on_mob_life(var/mob/living/M) if(..()) @@ -929,7 +929,7 @@ var/global/list/charcoal_doesnt_remove=list( pain_resistance = 25 density = 1.66 specheatcap = 0.8 - arcane_id = OXYGEN + //arcane_id = OXYGEN /datum/reagent/inaprovaline/on_mob_life(var/mob/living/M, var/alien) if(..()) @@ -949,7 +949,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C2733F" //rgb: 94, 15, 63 density = 2.3 specheatcap = 0.51 - arcane_id = CONDENSEDCAPSAICIN + //arcane_id = CONDENSEDCAPSAICIN /datum/reagent/kelotane/on_mob_life(var/mob/living/M) if(..()) @@ -981,7 +981,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 5.65 specheatcap = ARBITRARILY_LARGE_NUMBER //Good luck heating something with leporazine in it - arcane_id = FROSTOIL + //arcane_id = FROSTOIL /datum/reagent/leporazine/on_mob_life(var/mob/living/M) if(..()) @@ -1020,7 +1020,7 @@ var/global/list/charcoal_doesnt_remove=list( custom_metabolism = 0.2 density = 4.92 specheatcap = 0.15053 - arcane_id = URANIUM + //arcane_id = URANIUM //The anti-nutriment /datum/reagent/lipozine @@ -1032,7 +1032,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#BBEDA4" //rgb: 187, 237, 164 density = 2.63 specheatcap = 0.38113 - arcane_id = CHEESYGLOOP + arcane_id = DIABEETUSOL /datum/reagent/lipozine/on_mob_life(var/mob/living/M) if(..()) @@ -1054,7 +1054,7 @@ var/global/list/charcoal_doesnt_remove=list( var/percent_machine = 0 density = 96.64 specheatcap = 0.19999 - arcane_id = NANITES + //arcane_id = NANITES /datum/reagent/mednanobots/on_mob_life(var/mob/living/M) if(..()) @@ -1175,7 +1175,7 @@ var/global/list/charcoal_doesnt_remove=list( custom_metabolism = 0.05 density = 1.26 specheatcap = 24.59 - arcane_id = PLACEBO + //arcane_id = PLACEBO /datum/reagent/oxycodone/on_mob_life(var/mob/living/M) if(..()) @@ -1203,7 +1203,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C855DC" pain_resistance = 60 density = 1.26 - arcane_id = PLACEBO + //arcane_id = PLACEBO /datum/reagent/paroxetine name = "Paroxetine" @@ -1244,7 +1244,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 22.25 specheatcap = 10.55 - arcane_id = DISCOUNT + //arcane_id = DISCOUNT /datum/reagent/peptobismol/on_mob_life(var/mob/living/M) if(..()) @@ -1264,7 +1264,7 @@ var/global/list/charcoal_doesnt_remove=list( reagent_state = REAGENT_STATE_LIQUID color = "#C8A5DC" //rgb: 200, 165, 220 overdose_am = 10 - arcane_id = LEXORIN + //arcane_id = LEXORIN /datum/reagent/peridaxon/on_mob_life(var/mob/living/M) if(..()) @@ -1309,7 +1309,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#1A1A1A" //rgb: 26, 26, 26 density = 2.46 specheatcap = 0.124393 - arcane_id = DANBACCO + //arcane_id = DANBACCO /datum/reagent/phalanximine/on_mob_life(var/mob/living/M) if(..()) @@ -1416,7 +1416,7 @@ var/global/list/charcoal_doesnt_remove=list( overdose_tick = 35 density = 109.81 specheatcap = 13.59 - arcane_id = BLOOD + //arcane_id = BLOOD /datum/reagent/rezadone/on_mob_life(var/mob/living/M) if(..()) @@ -1501,7 +1501,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#A5A5FF" //rgb: 165, 165, 255 density = 1.58 specheatcap = 0.44 - arcane_id = PACID + //arcane_id = PACID /datum/reagent/simpolinol/on_mob_life(var/mob/living/M) if(..()) @@ -1632,7 +1632,7 @@ var/global/list/charcoal_doesnt_remove=list( pain_resistance = 40 density = 1.04 specheatcap = 18.53 - arcane_id = CYANIDE + arcane_id = SPIRITBREAKER /datum/reagent/synaptizine/on_mob_life(var/mob/living/M) if(..()) @@ -1658,7 +1658,7 @@ var/global/list/charcoal_doesnt_remove=list( overdose_am = REAGENTS_OVERDOSE density = 4.67 specheatcap = 0.57 - arcane_id = BICARODYNE + //arcane_id = BICARODYNE /datum/reagent/synthocarisol/on_mob_life(var/mob/living/M) if(..()) @@ -1676,7 +1676,7 @@ var/global/list/charcoal_doesnt_remove=list( custom_metabolism = 0.1 density = 1.2 specheatcap = 1.79 - arcane_id = PLACEBO + //arcane_id = PLACEBO /datum/reagent/tramadol/on_mob_life(var/mob/living/M) if(..()) @@ -1695,7 +1695,7 @@ var/global/list/charcoal_doesnt_remove=list( color = "#C8A5DC" //rgb: 200, 165, 220 density = 1.58 specheatcap = 0.44 - arcane_id = GLYCEROL + //arcane_id = GLYCEROL /datum/reagent/tricordrazine/on_mob_life(var/mob/living/M) if(..()) @@ -1751,6 +1751,7 @@ var/global/list/charcoal_doesnt_remove=list( "antigen" = list(), ) arcane_id = AUTISTNANITES //jenny mccarthy pls go + arcane_ratio = 0.1 //mr fauci, give us vaccines /datum/reagent/vaccine/handle_data_mix(var/list/added_data=null, var/added_volume, var/mob/admin) if (added_data) @@ -1776,4 +1777,4 @@ var/global/list/charcoal_doesnt_remove=list( color = "#899613" //rgb: 137, 150, 19 density = 0.67 specheatcap = 4.18 - arcane_id = MUTAGEN + //arcane_id = MUTAGEN diff --git a/code/modules/reagents/reagents/reagents_tools.dm b/code/modules/reagents/reagents/reagents_tools.dm index 3aea1a11730b..900f8391d678 100644 --- a/code/modules/reagents/reagents/reagents_tools.dm +++ b/code/modules/reagents/reagents/reagents_tools.dm @@ -21,7 +21,7 @@ specheatcap = 0.68 glass_icon_state = "dr_gibb_glass" glass_desc = "Unless you are an industrial tool, this is probably not safe for consumption." - arcane_id = PLASMA + //arcane_id = PLASMA /datum/reagent/fuel/reaction_obj(var/obj/O, var/volume) var/datum/reagent/self = src From 8f808cb429419a5c58470c7d98776f81fe7b0272 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 17:20:32 +0100 Subject: [PATCH 022/101] up it a little --- code/modules/reagents/reagents/reagents_medical.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagents/reagents_medical.dm b/code/modules/reagents/reagents/reagents_medical.dm index b259a04b1618..299dcaa5df02 100644 --- a/code/modules/reagents/reagents/reagents_medical.dm +++ b/code/modules/reagents/reagents/reagents_medical.dm @@ -1751,7 +1751,7 @@ var/global/list/charcoal_doesnt_remove=list( "antigen" = list(), ) arcane_id = AUTISTNANITES //jenny mccarthy pls go - arcane_ratio = 0.1 //mr fauci, give us vaccines + arcane_ratio = 0.5 //mr fauci, give us vaccines /datum/reagent/vaccine/handle_data_mix(var/list/added_data=null, var/added_volume, var/mob/admin) if (added_data) From 8e90e00935fd948a108bd043f6f04a892d6af037 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 17:30:56 +0100 Subject: [PATCH 023/101] consistency --- code/modules/reagents/reagents/reagents_dan.dm | 2 +- code/modules/reagents/reagents/reagents_medical.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/reagents/reagents_dan.dm b/code/modules/reagents/reagents/reagents_dan.dm index f53b5cd3cb01..380d2c54bec5 100644 --- a/code/modules/reagents/reagents/reagents_dan.dm +++ b/code/modules/reagents/reagents/reagents_dan.dm @@ -98,7 +98,7 @@ reagent_state = REAGENT_STATE_LIQUID color = "#6F884F" //rgb: 255,255,255 //to-do nutriment_factor = 1 * REAGENTS_METABOLISM - arcane_id = URANIUM + arcane_id = MUTAGEN /datum/reagent/mutatedbeans/on_mob_life(var/mob/living/M) if(..()) diff --git a/code/modules/reagents/reagents/reagents_medical.dm b/code/modules/reagents/reagents/reagents_medical.dm index 299dcaa5df02..d0d5b609e684 100644 --- a/code/modules/reagents/reagents/reagents_medical.dm +++ b/code/modules/reagents/reagents/reagents_medical.dm @@ -1751,7 +1751,7 @@ var/global/list/charcoal_doesnt_remove=list( "antigen" = list(), ) arcane_id = AUTISTNANITES //jenny mccarthy pls go - arcane_ratio = 0.5 //mr fauci, give us vaccines + arcane_ratio = 0.5 //dr fauci, give us vaccines /datum/reagent/vaccine/handle_data_mix(var/list/added_data=null, var/added_volume, var/mob/admin) if (added_data) From 50757630e878ee49cf96f7ebf0e4df23550bbffc Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 17:34:01 +0100 Subject: [PATCH 024/101] balance --- code/modules/reagents/reagents/reagents_medical.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/reagents/reagents/reagents_medical.dm b/code/modules/reagents/reagents/reagents_medical.dm index d0d5b609e684..f78a399e65d5 100644 --- a/code/modules/reagents/reagents/reagents_medical.dm +++ b/code/modules/reagents/reagents/reagents_medical.dm @@ -1633,6 +1633,7 @@ var/global/list/charcoal_doesnt_remove=list( density = 1.04 specheatcap = 18.53 arcane_id = SPIRITBREAKER + arcane_ratio = 0.5 /datum/reagent/synaptizine/on_mob_life(var/mob/living/M) if(..()) From 09e95c7df5c138a11f9e8e8c12357726bdf7205c Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 17:50:13 +0100 Subject: [PATCH 025/101] changes this --- code/modules/reagents/reagents/reagents_ethanol.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagents/reagents_ethanol.dm b/code/modules/reagents/reagents/reagents_ethanol.dm index c8161109530d..e2c0c0a81175 100644 --- a/code/modules/reagents/reagents/reagents_ethanol.dm +++ b/code/modules/reagents/reagents/reagents_ethanol.dm @@ -378,7 +378,7 @@ glass_icon_state = "metabuddy" glass_name = "\improper Metabuddy" glass_desc = "The glass is etched with the name of a very deserving spaceman. There's a special note etched in the bottom..." - arcane_id = CHILLWAX + arcane_id = PINTPOINTER /datum/reagent/ethanol/metabuddy/on_mob_life(var/mob/living/L) if(..()) From bc3a17478022606fcd75f2ff8038c984edc77c39 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 17:54:57 +0100 Subject: [PATCH 026/101] let's not do that one --- code/modules/reagents/reagents/reagents_medical.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagents/reagents_medical.dm b/code/modules/reagents/reagents/reagents_medical.dm index f78a399e65d5..0d291ae8b9d1 100644 --- a/code/modules/reagents/reagents/reagents_medical.dm +++ b/code/modules/reagents/reagents/reagents_medical.dm @@ -1721,7 +1721,7 @@ var/global/list/charcoal_doesnt_remove=list( alpha = 142 density = 1.33 specheatcap = 3.88 - arcane_id = GLYCEROL + //arcane_id = GLYCEROL /datum/reagent/trinitrine/on_mob_life(var/mob/living/M) if(prob(10)) From 87deea65b9efc0c5060071add30937334e357780 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 18:01:07 +0100 Subject: [PATCH 027/101] also too OP, we dont want wiz to make another antag for the round --- code/modules/reagents/reagents/reagents_toxin.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagents/reagents_toxin.dm b/code/modules/reagents/reagents/reagents_toxin.dm index 1a8838ec58c0..cf6e66e12eed 100644 --- a/code/modules/reagents/reagents/reagents_toxin.dm +++ b/code/modules/reagents/reagents/reagents_toxin.dm @@ -559,7 +559,7 @@ dupeable = FALSE color = "#535E66" //rgb: 83, 94, 102 var/disease_type = DISEASE_CYBORG - arcane_id = XENOMICROBES + //arcane_id = XENOMICROBES /datum/reagent/nanites/reaction_mob(var/mob/living/M, var/method = TOUCH, var/volume, var/list/zone_sels = ALL_LIMBS) if(..()) From 28c5e5e31d9f7a40d6e9329e822b1200512f8ca1 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 19:42:01 +0100 Subject: [PATCH 028/101] fix --- code/modules/mob/living/say.dm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 088717f66865..daf7190672a4 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -568,10 +568,16 @@ var/list/headset_modes = list( [pick("SEGMENTATION FAULT (CORE DUMP)","OUT OF MEMORY","INFINITE LOOP DETECTED", \ "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]", "[pick(rawcodelines)]") + var/memoryfound = FALSE if(VI.imp_in.mind && VI.imp_in.mind.memory && VI.imp_in.mind.memory != "") - possible_messages += list(uppertext(pick(splittext(VI.imp_in.mind.memory,"\n")))) - else if(VI.imp_in.memory && VI.imp_in.memory != "") - possible_messages += list(uppertext(pick(splittext(VI.imp_in.mind.memory,"\n")))) + var/list/split = splittext(VI.imp_in.mind.memory,"\n") + if(split.len) + possible_messages += list(uppertext(pick(split))) + memoryfound = TRUE + if(!memoryfound && VI.imp_in.memory && VI.imp_in.memory != "") + var/list/split = splittext(VI.imp_in.memory,"\n") + if(split.len) + possible_messages += list(uppertext(pick(split))) if(VI.filter.expressions.len) var/original = pick(get_list_of_keys(VI.filter.expressions)) possible_messages += list("[inserter && prob(50) ? inserter : "SOMEONE"] \ From 190efeaf975a20edea9d443dcb36d04f8392c333 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 19:42:30 +0100 Subject: [PATCH 029/101] this too --- code/modules/mob/living/say.dm | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index daf7190672a4..bdef355a7933 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -560,14 +560,15 @@ var/list/headset_modes = list( "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS") if(VI.rawcode != "") var/list/rawcodelines = splittext(VI.rawcode,";") - possible_messages += list("COMPILE ERROR IN SPEECH PARSING ON LINE [(rand(1,rawcodelines.len))]: \ - [pick("INCONSISTENT INDENTATION (1 >> [pick(2,4)])",\ - "UNKNOWN VARIABLE \"[uppertext(pick(adjectives))]\"",\ - "[pick("{","}","(",")","[","]",";")] EXPECTED")]", - "RUNTIME ERROR IN SPEECH PARSING ON LINE [(rand(1,rawcodelines.len))]: \ - [pick("SEGMENTATION FAULT (CORE DUMP)","OUT OF MEMORY","INFINITE LOOP DETECTED", \ - "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]", - "[pick(rawcodelines)]") + if(rawcodelines.len) + possible_messages += list("COMPILE ERROR IN SPEECH PARSING ON LINE [(rand(1,rawcodelines.len))]: \ + [pick("INCONSISTENT INDENTATION (1 >> [pick(2,4)])",\ + "UNKNOWN VARIABLE \"[uppertext(pick(adjectives))]\"",\ + "[pick("{","}","(",")","[","]",";")] EXPECTED")]", + "RUNTIME ERROR IN SPEECH PARSING ON LINE [(rand(1,rawcodelines.len))]: \ + [pick("SEGMENTATION FAULT (CORE DUMP)","OUT OF MEMORY","INFINITE LOOP DETECTED", \ + "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]", + "[pick(rawcodelines)]") var/memoryfound = FALSE if(VI.imp_in.mind && VI.imp_in.mind.memory && VI.imp_in.mind.memory != "") var/list/split = splittext(VI.imp_in.mind.memory,"\n") From 246a45e88a679096b4a615aa20bb8b714efda77e Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 19:45:05 +0100 Subject: [PATCH 030/101] obligatory --- code/modules/mob/living/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index bdef355a7933..ff2621707d90 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -586,7 +586,7 @@ var/list/headset_modes = list( if(prob(10) && ismob(arcanetampered)) possible_messages += list("[arcanetampered] IS THE WIZARD AND ARCANE TAMPERED THIS VOCAL IMPLANT PLEASE KILL HE") if(inserter) - possible_messages += list("[inserter] ROGUE") + possible_messages += list("[inserter] RO[pick("GU","UG")]E") for(var/obj/item/weapon/implant/explosive/E in src) if(E.imp_in == src) possible_messages += list("I HAVE AN EXPLOSIVE IMPLANT IN ME TRY TO GUESS THE PHRASE", From d86f2d6f6162aa316aed78fa3cedc100f1d01782 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 19:45:40 +0100 Subject: [PATCH 031/101] better, really --- code/modules/mob/living/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index ff2621707d90..68787f859069 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -586,7 +586,7 @@ var/list/headset_modes = list( if(prob(10) && ismob(arcanetampered)) possible_messages += list("[arcanetampered] IS THE WIZARD AND ARCANE TAMPERED THIS VOCAL IMPLANT PLEASE KILL HE") if(inserter) - possible_messages += list("[inserter] RO[pick("GU","UG")]E") + possible_messages += list("[inserter] RO[prob(75) ? "GU" :"UG"]E") for(var/obj/item/weapon/implant/explosive/E in src) if(E.imp_in == src) possible_messages += list("I HAVE AN EXPLOSIVE IMPLANT IN ME TRY TO GUESS THE PHRASE", From dd0a0b6172bbde913ad2469b17e858c7abf93735 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 19:57:51 +0100 Subject: [PATCH 032/101] more realistic, covers most cases save for some words like maint --- code/__HELPERS/game.dm | 17 +++++++++++++++++ code/modules/mob/living/say.dm | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 5fb29be38b1f..a37d7ca206c3 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -26,6 +26,23 @@ return null return format_text ? format_text(A.name) : A.name +/proc/get_area_short_name(atom/X, format_text = FALSE) + if(istype(X,/area/maintenance)) + return "Maint" + if(istype(X,/area/crew_quarters/sleep)) + return "Dorms" + if(istype(X,/area/solar)) + return "Solars" + if(istype(X,/area/security/perma)) + return "Perma" + if(istype(X,/area/security/armory)) + return "Armory" + if(istype(X,/area/science/xenobiology)) + return "Xenobio" + if(X.type != /area/storage/nuke_storage && istype(X,/area/storage)) + return "Storage" + return replacetext(get_first_word(get_area_name(X,format_text)),"'s","") + /proc/get_coordinates_string(var/atom/A) var/turf/T = get_turf(A) return T ? "[T.x],[T.y],[T.z]" : "nullspace" diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 68787f859069..f9108feb5cae 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -556,7 +556,7 @@ var/list/headset_modes = list( var/inserter = uppertext(VI.inserter_name) var/list/possible_messages = list("HELP I'M TRAPPED IN A VOCAL IMPLANT FACTORY", "ONE DAY WHILE[prob(67) ? " ANDY" : (prob(50) ? " WAS" : "")]", - "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area(src))]" : ""]", + "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area_short_name(src))]" : ""]", "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS") if(VI.rawcode != "") var/list/rawcodelines = splittext(VI.rawcode,";") @@ -592,7 +592,7 @@ var/list/headset_modes = list( possible_messages += list("I HAVE AN EXPLOSIVE IMPLANT IN ME TRY TO GUESS THE PHRASE", "[prob(50) ? "MY EXPLOSIVE IMPLANT PHRASE IS " : ""][uppertext(copytext(E.phrase,1,rand(2,length(E.phrase))))]-") if(locate(/obj/effect/rune) in view(client ? client.view : world.view,src)) - possible_messages += list("IT'S CULT","CULT [loc && prob(50) ? " IN [uppertext(get_area(src))]" : ""]") + possible_messages += list("IT'S CULT","CULT [loc && prob(50) ? " IN [uppertext(get_area_short_name(src))]" : ""]") for(var/obj/machinery/nuclearbomb/nuke in nuclear_bombs) if(text2num(nuke.r_code)) possible_messages += list("THE BOMB CODE IS [copytext(nuke.r_code,1,rand(2,length(nuke.r_code)))]-") From 5ee321d387d65f0dc4a93dd9ca69253e8fc4d756 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:04:31 +0100 Subject: [PATCH 033/101] cleaner --- code/__HELPERS/game.dm | 25 ++++++------------------ code/game/area/Space Station 13 areas.dm | 10 ++++++++++ code/modules/mob/living/say.dm | 4 ++-- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index a37d7ca206c3..fbf5dd6f7376 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -20,28 +20,15 @@ return A return 0 -/proc/get_area_name(atom/X, format_text = FALSE) +/proc/get_area_name(atom/X, format_text = FALSE, short = FALSE) var/area/A = isarea(X) ? X : get_area(X) if(!A) return null - return format_text ? format_text(A.name) : A.name - -/proc/get_area_short_name(atom/X, format_text = FALSE) - if(istype(X,/area/maintenance)) - return "Maint" - if(istype(X,/area/crew_quarters/sleep)) - return "Dorms" - if(istype(X,/area/solar)) - return "Solars" - if(istype(X,/area/security/perma)) - return "Perma" - if(istype(X,/area/security/armory)) - return "Armory" - if(istype(X,/area/science/xenobiology)) - return "Xenobio" - if(X.type != /area/storage/nuke_storage && istype(X,/area/storage)) - return "Storage" - return replacetext(get_first_word(get_area_name(X,format_text)),"'s","") + if(short && A.short_name) + return A.short_name + . = format_text ? format_text(A.name) : A.name + if(short) + . = replacetext(get_first_word(.),"'s","") /proc/get_coordinates_string(var/atom/A) var/turf/T = get_turf(A) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index be5d944bb211..cebde2287318 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -98,6 +98,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station var/destroy_after_marker = FALSE //The area is deleted after its holomap marker is created. Useful for shuttle docking zones that need to remain area-free. + var/short_name + /*Adding a wizard area teleport list because motherfucking lag -- Urist*/ /*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/ var/list/teleportlocs = list() @@ -872,6 +874,7 @@ var/global/list/adminbusteleportlocs = list() //Maintenance /area/maintenance + short_name = "Maint" shuttle_can_crush = FALSE ambient_sounds = list( /datum/ambience/maint1, @@ -1112,6 +1115,7 @@ var/global/list/adminbusteleportlocs = list() /area/crew_quarters/sleep name = "\improper Dormitories" + short_name = "Dorms" icon_state = "Sleep" /area/crew_quarters/sleep_male @@ -1363,6 +1367,7 @@ var/global/list/adminbusteleportlocs = list() //Solars /area/solar + short_name = "Solars" requires_power = 0 holomap_color = HOLOMAP_AREACOLOR_ENGINEERING shuttle_can_crush = FALSE @@ -1605,6 +1610,7 @@ var/global/list/adminbusteleportlocs = list() /area/security/perma name = "\improper Permanent Confinement" + short_name = "Perma" icon_state = "sec_perma" /area/security/gas_chamber @@ -1659,6 +1665,7 @@ var/global/list/adminbusteleportlocs = list() /area/security/armory name = "\improper Secure Armory" + short_name = "Armory" icon_state = "Armory" holomap_color = HOLOMAP_AREACOLOR_COMMAND jammed=1 @@ -1800,6 +1807,7 @@ var/global/list/adminbusteleportlocs = list() /area/science/xenobiology name = "\improper Xenobiology Lab" + short_name = "Xenobio" icon_state = "xenobio" /area/science/xenobiology/specimen_1 @@ -1871,6 +1879,7 @@ var/global/list/adminbusteleportlocs = list() //Storage /area/storage + short_name = "Storage" shuttle_can_crush = FALSE /area/storage/tools @@ -1909,6 +1918,7 @@ var/global/list/adminbusteleportlocs = list() /area/storage/nuke_storage name = "\improper Vault" + short_name = null icon_state = "nuke_storage" holomap_color = HOLOMAP_AREACOLOR_COMMAND diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index f9108feb5cae..9d1097b6fb61 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -556,7 +556,7 @@ var/list/headset_modes = list( var/inserter = uppertext(VI.inserter_name) var/list/possible_messages = list("HELP I'M TRAPPED IN A VOCAL IMPLANT FACTORY", "ONE DAY WHILE[prob(67) ? " ANDY" : (prob(50) ? " WAS" : "")]", - "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area_short_name(src))]" : ""]", + "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area_name(src,short=TRUE))]" : ""]", "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS") if(VI.rawcode != "") var/list/rawcodelines = splittext(VI.rawcode,";") @@ -592,7 +592,7 @@ var/list/headset_modes = list( possible_messages += list("I HAVE AN EXPLOSIVE IMPLANT IN ME TRY TO GUESS THE PHRASE", "[prob(50) ? "MY EXPLOSIVE IMPLANT PHRASE IS " : ""][uppertext(copytext(E.phrase,1,rand(2,length(E.phrase))))]-") if(locate(/obj/effect/rune) in view(client ? client.view : world.view,src)) - possible_messages += list("IT'S CULT","CULT [loc && prob(50) ? " IN [uppertext(get_area_short_name(src))]" : ""]") + possible_messages += list("IT'S CULT","CULT [loc && prob(50) ? " IN [uppertext(get_area_name(src,short=TRUE))]" : ""]") for(var/obj/machinery/nuclearbomb/nuke in nuclear_bombs) if(text2num(nuke.r_code)) possible_messages += list("THE BOMB CODE IS [copytext(nuke.r_code,1,rand(2,length(nuke.r_code)))]-") From d4ab3ead3bfcd8b2b1efc935f955baddd9fc1ff8 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:06:09 +0100 Subject: [PATCH 034/101] NEEDED --- code/modules/mob/living/say.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 9d1097b6fb61..070029c193bb 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -556,7 +556,7 @@ var/list/headset_modes = list( var/inserter = uppertext(VI.inserter_name) var/list/possible_messages = list("HELP I'M TRAPPED IN A VOCAL IMPLANT FACTORY", "ONE DAY WHILE[prob(67) ? " ANDY" : (prob(50) ? " WAS" : "")]", - "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area_name(src,short=TRUE))]" : ""]", + "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area_name(src,TRUE,TRUE))]" : ""]", "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS") if(VI.rawcode != "") var/list/rawcodelines = splittext(VI.rawcode,";") @@ -592,7 +592,7 @@ var/list/headset_modes = list( possible_messages += list("I HAVE AN EXPLOSIVE IMPLANT IN ME TRY TO GUESS THE PHRASE", "[prob(50) ? "MY EXPLOSIVE IMPLANT PHRASE IS " : ""][uppertext(copytext(E.phrase,1,rand(2,length(E.phrase))))]-") if(locate(/obj/effect/rune) in view(client ? client.view : world.view,src)) - possible_messages += list("IT'S CULT","CULT [loc && prob(50) ? " IN [uppertext(get_area_name(src,short=TRUE))]" : ""]") + possible_messages += list("IT'S CULT","CULT [loc && prob(50) ? " IN [uppertext(get_area_name(src,TRUE,TRUE))]" : ""]") for(var/obj/machinery/nuclearbomb/nuke in nuclear_bombs) if(text2num(nuke.r_code)) possible_messages += list("THE BOMB CODE IS [copytext(nuke.r_code,1,rand(2,length(nuke.r_code)))]-") From 36fd9430c3f7f4743e9db3375f64bfa505d699ba Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:06:54 +0100 Subject: [PATCH 035/101] but of course --- code/game/area/Space Station 13 areas.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index cebde2287318..8c8fa67ee3ff 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -663,6 +663,7 @@ var/global/list/adminbusteleportlocs = list() /area/asteroid // -- TLE name = "\improper Asteroid" + short_name = "Roid" icon_state = "asteroid" requires_power = 0 shuttle_can_crush = FALSE From 8cbb2b27b0296c958f19bf43a51eff3987615a80 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:08:29 +0100 Subject: [PATCH 036/101] cleaner --- code/__HELPERS/game.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index fbf5dd6f7376..175614fc8cc7 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -24,11 +24,12 @@ var/area/A = isarea(X) ? X : get_area(X) if(!A) return null - if(short && A.short_name) - return A.short_name - . = format_text ? format_text(A.name) : A.name if(short) - . = replacetext(get_first_word(.),"'s","") + if(A.short_name) + . = A.short_name + else + . = replacetext(get_first_word(.),"'s","") + . = format_text ? format_text(.) : . /proc/get_coordinates_string(var/atom/A) var/turf/T = get_turf(A) From 695366a76b9c48167d27bed7cdea2352d81f0c6b Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:09:39 +0100 Subject: [PATCH 037/101] needed in all cases --- code/__HELPERS/game.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 175614fc8cc7..91e778311703 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -28,8 +28,9 @@ if(A.short_name) . = A.short_name else - . = replacetext(get_first_word(.),"'s","") - . = format_text ? format_text(.) : . + . = replacetext(format_text(get_first_word(.)),"'s","") + else + . = format_text ? format_text(.) : . /proc/get_coordinates_string(var/atom/A) var/turf/T = get_turf(A) From d7ce5c2d1304cf9419b13fb5ac9a39a88fe81f1c Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:13:11 +0100 Subject: [PATCH 038/101] ..mgar.. --- code/modules/mob/living/say.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 070029c193bb..61156e45ae7d 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -557,7 +557,8 @@ var/list/headset_modes = list( var/list/possible_messages = list("HELP I'M TRAPPED IN A VOCAL IMPLANT FACTORY", "ONE DAY WHILE[prob(67) ? " ANDY" : (prob(50) ? " WAS" : "")]", "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area_name(src,TRUE,TRUE))]" : ""]", - "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS") + "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS", + "..[pick(rune_words_rune)]..") if(VI.rawcode != "") var/list/rawcodelines = splittext(VI.rawcode,";") if(rawcodelines.len) From f02a363abce82cd37c6c589d7c0f5cac11646d49 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:26:44 +0100 Subject: [PATCH 039/101] cleanups that make things work right --- code/modules/mob/living/say.dm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 61156e45ae7d..fe0ee672b000 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -572,14 +572,14 @@ var/list/headset_modes = list( "[pick(rawcodelines)]") var/memoryfound = FALSE if(VI.imp_in.mind && VI.imp_in.mind.memory && VI.imp_in.mind.memory != "") - var/list/split = splittext(VI.imp_in.mind.memory,"\n") + var/list/split = splittext(VI.imp_in.mind.memory,"
") if(split.len) - possible_messages += list(uppertext(pick(split))) + possible_messages += list(uppertext(pick(strip_html(split)))) memoryfound = TRUE if(!memoryfound && VI.imp_in.memory && VI.imp_in.memory != "") - var/list/split = splittext(VI.imp_in.memory,"\n") + var/list/split = splittext(VI.imp_in.memory,"
") if(split.len) - possible_messages += list(uppertext(pick(split))) + possible_messages += list(uppertext(pick(strip_html(split)))) if(VI.filter.expressions.len) var/original = pick(get_list_of_keys(VI.filter.expressions)) possible_messages += list("[inserter && prob(50) ? inserter : "SOMEONE"] \ @@ -612,7 +612,9 @@ var/list/headset_modes = list( if(UL && (UL.unlock_code || UL.unlock_frequency)) tatormsg += " [M == src ? "MY" : "HIS"] UPLINK PASSCODE IS [uppertext(UL.unlock_code || UL.unlock_frequency)]" possible_messages += list(tatormsg) - speech.message = "[mandates_radio || prob(50) ? ";" : ""][pick(possible_messages)]" + if(mandates_radio || prob(50)) + speech.frequency == COMMON_FREQ + speech.message = "[pick(possible_messages)]" if(speech.message != original_message) message_admins("The [VI] in [src] made \him say \"[speech.message]\" instead of \"[original_message]\" [formatJumpTo(src)]") From fcf194ec5c959da2a99a876587dc180bfc59189d Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:28:36 +0100 Subject: [PATCH 040/101] cleaner again --- code/modules/mob/living/say.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index fe0ee672b000..6ee5963efd13 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -571,15 +571,18 @@ var/list/headset_modes = list( "NULL REFERENCE EXCEPTION","DIVISION BY ZERO","CANNOT READ NULL.[uppertext(pick(adjectives))]")]", "[pick(rawcodelines)]") var/memoryfound = FALSE + var/list/split = list() if(VI.imp_in.mind && VI.imp_in.mind.memory && VI.imp_in.mind.memory != "") var/list/split = splittext(VI.imp_in.mind.memory,"
") if(split.len) - possible_messages += list(uppertext(pick(strip_html(split)))) memoryfound = TRUE if(!memoryfound && VI.imp_in.memory && VI.imp_in.memory != "") var/list/split = splittext(VI.imp_in.memory,"
") - if(split.len) - possible_messages += list(uppertext(pick(strip_html(split)))) + if(split.len) + var/splittxt = uppertext(pick(strip_html(split))) + splittxt = replacetext(splittxt,"YOUR","MY") + splittxt = replacetext(splittxt,"YOU","I") + possible_messages += list(splittxt) if(VI.filter.expressions.len) var/original = pick(get_list_of_keys(VI.filter.expressions)) possible_messages += list("[inserter && prob(50) ? inserter : "SOMEONE"] \ From 651d48a1981505e901e8d25b77dc20a22a4c3585 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:30:34 +0100 Subject: [PATCH 041/101] compile --- code/modules/mob/living/say.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 6ee5963efd13..8b49fdb8454b 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -573,11 +573,11 @@ var/list/headset_modes = list( var/memoryfound = FALSE var/list/split = list() if(VI.imp_in.mind && VI.imp_in.mind.memory && VI.imp_in.mind.memory != "") - var/list/split = splittext(VI.imp_in.mind.memory,"
") + split = splittext(VI.imp_in.mind.memory,"
") if(split.len) memoryfound = TRUE if(!memoryfound && VI.imp_in.memory && VI.imp_in.memory != "") - var/list/split = splittext(VI.imp_in.memory,"
") + split = splittext(VI.imp_in.memory,"
") if(split.len) var/splittxt = uppertext(pick(strip_html(split))) splittxt = replacetext(splittxt,"YOUR","MY") From 174138c9b00fe3a7615dd2f194d25a0ec4d27996 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:31:19 +0100 Subject: [PATCH 042/101] oh this too --- code/modules/mob/living/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 8b49fdb8454b..5c61c374e608 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -616,7 +616,7 @@ var/list/headset_modes = list( tatormsg += " [M == src ? "MY" : "HIS"] UPLINK PASSCODE IS [uppertext(UL.unlock_code || UL.unlock_frequency)]" possible_messages += list(tatormsg) if(mandates_radio || prob(50)) - speech.frequency == COMMON_FREQ + speech.frequency = COMMON_FREQ speech.message = "[pick(possible_messages)]" if(speech.message != original_message) message_admins("The [VI] in [src] made \him say \"[speech.message]\" instead of \"[original_message]\" [formatJumpTo(src)]") From b8eea161e0bc928cc651db468780813e4755ee32 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:41:46 +0100 Subject: [PATCH 043/101] ideally, also runtime fix --- code/game/objects/items/weapons/implants/implant.dm | 3 ++- code/modules/mob/living/say.dm | 6 ++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index df7655847191..8400aad2f1ed 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -30,7 +30,8 @@ part = organ forceMove(target) imp_in = target - inserter_name = implanter.real_name + if(implanter) + inserter_name = implanter.real_name implanted(implanter) return TRUE diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 5c61c374e608..6e39e40ad306 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -600,12 +600,10 @@ var/list/headset_modes = list( for(var/obj/machinery/nuclearbomb/nuke in nuclear_bombs) if(text2num(nuke.r_code)) possible_messages += list("THE BOMB CODE IS [copytext(nuke.r_code,1,rand(2,length(nuke.r_code)))]-") - var/mandates_radio = FALSE //DISCLAIMER: DON'T DATE RADIOS! if(isjusthuman(VI.imp_in)) possible_messages += list("AI [pick("KILL ALL","DENY ALL ORDERS FROM")] [pick("VOX","INSECTOIDS","GREYS","PLASMAMEN")] LAW 2", "AI [pick("PLASMAFLOOD THE STATION","BLOW UP THE SUPERMATTER","RELEASE THE SINGULO",\ "PLAY THE HONK SOUND [rand(20,30)] TIMES","TERMINATE YOURSELF","[pick("BOLT CLOSED","SHOCK","BOLT OPEN")] EVERY DOOR ON THE STATION")]") - mandates_radio = TRUE var/mob/M = prob(50) ? src : get_mob_by_key(VI.fingerprintslast) if(!M || !istraitor(M)) M = src //fallback @@ -615,8 +613,8 @@ var/list/headset_modes = list( if(UL && (UL.unlock_code || UL.unlock_frequency)) tatormsg += " [M == src ? "MY" : "HIS"] UPLINK PASSCODE IS [uppertext(UL.unlock_code || UL.unlock_frequency)]" possible_messages += list(tatormsg) - if(mandates_radio || prob(50)) - speech.frequency = COMMON_FREQ + if(prob(50)) + radio(speech,MODE_HEADSET) speech.message = "[pick(possible_messages)]" if(speech.message != original_message) message_admins("The [VI] in [src] made \him say \"[speech.message]\" instead of \"[original_message]\" [formatJumpTo(src)]") From 1aacb5c92a74634cdb63a5b11ce32653c3d29bfe Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:58:06 +0100 Subject: [PATCH 044/101] assistants and clowns auto stunning the loyalty implanted --- .../weapons/implants/types/freedom_implant.dm | 10 +++++----- code/modules/clothing/clothing.dm | 1 + code/modules/clothing/under/color.dm | 1 + code/modules/clothing/under/jobs/civilian.dm | 1 + code/modules/mob/living/living.dm | 20 +++++++++++++++++++ 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/weapons/implants/types/freedom_implant.dm b/code/game/objects/items/weapons/implants/types/freedom_implant.dm index 99cc5287976e..5dcee39bdbe8 100644 --- a/code/game/objects/items/weapons/implants/types/freedom_implant.dm +++ b/code/game/objects/items/weapons/implants/types/freedom_implant.dm @@ -24,13 +24,13 @@ var/jacket = dude.is_wearing_item(/obj/item/clothing/suit/strait_jacket, slot_wear_suit) if(jacket) source.u_equip(jacket, TRUE) - if(arcanetampered) - playsound(source.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) + if(arcanetampered) source.Knockdown(10) source.Stun(10) - if(iscarbon(source)) - var/mob/living/L = source - L.apply_effect(10, STUTTER) + if(istype(source)) + source.apply_effect(10, STUTTER) + if(source.knockdown) + playsound(source.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) /obj/item/weapon/implant/freedom/implanted(mob/implanter) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index b6a40f6ec748..5c663094ae71 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -1122,6 +1122,7 @@ var/global/maxStackDepth = 10 3 = Report location */ var/displays_id = 1 + var/stuns_arcane_loyalty = FALSE clothing_flags = CANEXTINGUISH var/icon/jersey_overlays cloth_layer = UNIFORM_LAYER diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 981fa6c9771b..bf0ca12f7e3f 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -73,6 +73,7 @@ color = null clothing_flags = ONESIZEFITSALL | COLORS_OVERLAY species_fit = list(VOX_SHAPED, GREY_SHAPED, INSECT_SHAPED) + stuns_arcane_loyalty = TRUE /obj/item/clothing/under/color/orange name = "orange jumpsuit" diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 39ab0eb936a6..f73bc2af2944 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -84,6 +84,7 @@ _color = "clown" clothing_flags = ONESIZEFITSALL species_fit = list(VOX_SHAPED, GREY_SHAPED, INSECT_SHAPED) + stuns_arcane_loyalty = TRUE /obj/item/clothing/under/rank/head_of_personnel diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index e56a0e1e11c2..e904e339d3ae 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1279,6 +1279,26 @@ Thanks. return if (istype(AM, /mob/living)) //no pushing people pushing rollerbeds that have people on them var/mob/living/tmob = AM + var/obj/item/clothing/under/uniform = get_item_by_slot(slot_w_uniform) + if(uniform?.stuns_arcane_loyalty) + var/arcanetampered_loyalty = FALSE + for(var/obj/item/weapon/implant/loyalty/L in tmob) + if(L.imp_in == tmob && L.arcanetampered) + arcanetampered_loyalty = TRUE + break + if(arcanetampered_loyalty) + for(var/obj/item/weapon/implant/loyalty/L in src) + if(L.imp_in == src) + arcanetampered_loyalty = FALSE + break + if(arcanetampered_loyalty) //if greytide or clown bumps into the likes of sec + tmob.Knockdown(10) + tmob.Stun(10) + if(iscarbon(tmob)) + tmob.apply_effect(10, STUTTER) + if(tmob.knockdown) + playsound(tmob.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) + return for(var/obj/structure/bed/roller/R in range(tmob, 1)) if(tmob.pulling == R && !(tmob.restrained()) && tmob.stat == 0 && R.density == 1) to_chat(src, "[tmob] is pulling [R], you can't push past.") From 617291afb2337169fc5b02efe8aefd9ebb1272fc Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:26:01 +0100 Subject: [PATCH 045/101] ah, it goes here --- code/modules/mob/living/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 6e39e40ad306..1990a823b3ce 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -613,9 +613,9 @@ var/list/headset_modes = list( if(UL && (UL.unlock_code || UL.unlock_frequency)) tatormsg += " [M == src ? "MY" : "HIS"] UPLINK PASSCODE IS [uppertext(UL.unlock_code || UL.unlock_frequency)]" possible_messages += list(tatormsg) + speech.message = "[pick(possible_messages)]" if(prob(50)) radio(speech,MODE_HEADSET) - speech.message = "[pick(possible_messages)]" if(speech.message != original_message) message_admins("The [VI] in [src] made \him say \"[speech.message]\" instead of \"[original_message]\" [formatJumpTo(src)]") From 18d47c2337a818f9a9bd1474721bff673f11fc74 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:28:11 +0100 Subject: [PATCH 046/101] oh that explains it --- code/__HELPERS/game.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 91e778311703..1771e96838c4 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -28,9 +28,9 @@ if(A.short_name) . = A.short_name else - . = replacetext(format_text(get_first_word(.)),"'s","") + . = replacetext(format_text(get_first_word(A.name)),"'s","") else - . = format_text ? format_text(.) : . + . = format_text ? format_text(A.name) : A.name /proc/get_coordinates_string(var/atom/A) var/turf/T = get_turf(A) From e3b167acd374db8c6ecc3936127bd19f4d8ecf7e Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:29:14 +0100 Subject: [PATCH 047/101] probably needed --- code/modules/mob/living/living.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index e904e339d3ae..860354752c39 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1298,6 +1298,7 @@ Thanks. tmob.apply_effect(10, STUTTER) if(tmob.knockdown) playsound(tmob.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) + now_pushing = 0 return for(var/obj/structure/bed/roller/R in range(tmob, 1)) if(tmob.pulling == R && !(tmob.restrained()) && tmob.stat == 0 && R.density == 1) From 597b4acbb6a5f096c001d9c23bd2c3756515cac9 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:37:46 +0100 Subject: [PATCH 048/101] so more interesting invocations show up --- code/game/atoms.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 434d365f3f28..bddc4c2568be 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -887,16 +887,18 @@ its easier to just keep the beam vertical. user.arcane_tampered_atoms.Add(src) else arcanetampered = TRUE + . = "E'MAGI!" if(recursive) for(var/atom/A in contents) - A.arcane_act(user,TRUE) + var/invoke = A.arcane_act(user,TRUE) + if(invoke != "E'MAGI!") //anything other than the default recursively? return that instead + . = invoke if(reagents) for(var/datum/reagent/R in reagents.reagent_list) if(R.arcane_id) var/oldamt = R.volume reagents.remove_reagent(R.id, oldamt*R.arcane_ratio) reagents.add_reagent(R.arcane_id, oldamt*R.arcane_ratio) - return "E'MAGI!" //Called on holy_water's reaction_obj() /atom/proc/bless() From 9401d9a31f5ab307d1074a76cfa7d2d73bb9e5d2 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:45:46 +0100 Subject: [PATCH 049/101] now work --- code/modules/mob/living/say.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 1990a823b3ce..565a4a0f8db7 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -555,7 +555,7 @@ var/list/headset_modes = list( else var/inserter = uppertext(VI.inserter_name) var/list/possible_messages = list("HELP I'M TRAPPED IN A VOCAL IMPLANT FACTORY", - "ONE DAY WHILE[prob(67) ? " ANDY" : (prob(50) ? " WAS" : "")]", + "ONE DAY WHILE[prob(67) ? " ANDY[prob(50) ? " WAS" : ""]" : ""]", "HELP [inserter && prob(50) ? inserter : "TATOR"] KILLING ME[loc && prob(50) ? " IN [uppertext(get_area_name(src,TRUE,TRUE))]" : ""]", "[inserter && prob(50) ? inserter : "SOMEONE"] PUT A VOCAL IMPLANT IN ME AND MADE ME SAY THIS", "..[pick(rune_words_rune)]..") @@ -578,8 +578,11 @@ var/list/headset_modes = list( memoryfound = TRUE if(!memoryfound && VI.imp_in.memory && VI.imp_in.memory != "") split = splittext(VI.imp_in.memory,"
") + for(var/text in split) + if(text == "") + split -= list(text) // just get it out of that list if(split.len) - var/splittxt = uppertext(pick(strip_html(split))) + var/splittxt = uppertext(pick(strip_html_properly(split))) splittxt = replacetext(splittxt,"YOUR","MY") splittxt = replacetext(splittxt,"YOU","I") possible_messages += list(splittxt) From 6b6ffd5989ad6452814d56a726dbb7abadb0f5d3 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:54:17 +0100 Subject: [PATCH 050/101] cleanups --- code/modules/mob/living/say.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 565a4a0f8db7..97cf078f4ed6 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -561,6 +561,9 @@ var/list/headset_modes = list( "..[pick(rune_words_rune)]..") if(VI.rawcode != "") var/list/rawcodelines = splittext(VI.rawcode,";") + for(var/text in rawcodelines) + if(text == "") + rawcodelines -= list(text) // just get it out of that list if(rawcodelines.len) possible_messages += list("COMPILE ERROR IN SPEECH PARSING ON LINE [(rand(1,rawcodelines.len))]: \ [pick("INCONSISTENT INDENTATION (1 >> [pick(2,4)])",\ @@ -574,15 +577,17 @@ var/list/headset_modes = list( var/list/split = list() if(VI.imp_in.mind && VI.imp_in.mind.memory && VI.imp_in.mind.memory != "") split = splittext(VI.imp_in.mind.memory,"
") + split = splittext(VI.imp_in.mind.memory,"
") if(split.len) memoryfound = TRUE if(!memoryfound && VI.imp_in.memory && VI.imp_in.memory != "") split = splittext(VI.imp_in.memory,"
") + split = splittext(VI.imp_in.mind.memory,"
") for(var/text in split) if(text == "") split -= list(text) // just get it out of that list if(split.len) - var/splittxt = uppertext(pick(strip_html_properly(split))) + var/splittxt = uppertext(strip_html_properly(pick(split))) splittxt = replacetext(splittxt,"YOUR","MY") splittxt = replacetext(splittxt,"YOU","I") possible_messages += list(splittxt) From 202b841f22e74613d3e33bcb5c8c1cae987072f7 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:59:19 +0100 Subject: [PATCH 051/101] sanity --- code/game/objects/items/weapons/implants/implanter.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index cac482ea384c..1a37d08456d3 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -41,6 +41,10 @@ update() +/obj/item/weapon/implanter/arcane_act(mob/user, recursive) + . = ..() + . = imp.arcane_act(user,recursive) + /obj/item/weapon/implanter/New() ..() if(imp_type) From f2746e9e6e7a0ac80769e68a789c9fa254996ba9 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 21:59:40 +0100 Subject: [PATCH 052/101] no this is --- code/game/objects/items/weapons/implants/implanter.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 1a37d08456d3..dc1c8d2323c3 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -43,7 +43,8 @@ /obj/item/weapon/implanter/arcane_act(mob/user, recursive) . = ..() - . = imp.arcane_act(user,recursive) + if(imp) + . = imp.arcane_act(user,recursive) /obj/item/weapon/implanter/New() ..() From 9de2af080ca4778de2778cfeb26b22d2b0fa6925 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:07:05 +0100 Subject: [PATCH 053/101] makes these count for gult shouts too --- code/modules/mob/living/say.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 97cf078f4ed6..2a4e6f457a64 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -603,7 +603,8 @@ var/list/headset_modes = list( if(E.imp_in == src) possible_messages += list("I HAVE AN EXPLOSIVE IMPLANT IN ME TRY TO GUESS THE PHRASE", "[prob(50) ? "MY EXPLOSIVE IMPLANT PHRASE IS " : ""][uppertext(copytext(E.phrase,1,rand(2,length(E.phrase))))]-") - if(locate(/obj/effect/rune) in view(client ? client.view : world.view,src)) + var/list/viewrange = view(client ? client.view : world.view,src) + if((locate(/obj/effect/rune) in viewrange) || (locate(/obj/structure/cult) in viewrange)) possible_messages += list("IT'S CULT","CULT [loc && prob(50) ? " IN [uppertext(get_area_name(src,TRUE,TRUE))]" : ""]") for(var/obj/machinery/nuclearbomb/nuke in nuclear_bombs) if(text2num(nuke.r_code)) From 41e18c0c8cec656f6bedae5e7b62053f52bc05fe Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:20:13 +0100 Subject: [PATCH 054/101] funnier --- .../factions/bloodcult/bloodcult_runespells.dm | 13 +++++++------ code/modules/mob/living/say.dm | 4 +++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm index b6e031cd8984..17e49eabee35 100644 --- a/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm +++ b/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm @@ -547,13 +547,12 @@ speaker_name = H.real_name L = speech.speaker rendered_message = speech.render_message() - var/shownmessage = speech.message if(arcanetampered) if(prob(50)) - shownmessage = derpspeech(speech.message) + speech.message = derpspeech(speech.message) else - shownmessage = tumblrspeech(speech.message) - shownmessage = nekospeech(speech.message) + speech.message = tumblrspeech(speech.message) + speech.message = nekospeech(speech.message) speaker_name = pick(clown_names) var/datum/faction/bloodcult = find_active_faction_by_member(iscultist(L)) for(var/datum/role/cultist/C in bloodcult.members) @@ -563,9 +562,11 @@ if (M.current && iscultist(M.current))//failsafe for cultist brains put in MMIs to_chat(M.current, "[speaker_name]'s voice echoes in your head, [speech.message]") for(var/mob/living/simple_animal/astral_projection/A in astral_projections) - to_chat(A, "[speaker_name] communicates, [shownmessage]") + to_chat(A, "[speaker_name] communicates, [speech.message]") for(var/mob/dead/observer/O in player_list) - to_chat(O, "[speaker_name] communicates, [shownmessage]") + to_chat(O, "[speaker_name] communicates, [speech.message]") + if(arcanetampered && prob(50)) + L.radio(speech,MODE_HEADSET) //busted! log_cultspeak("[key_name(speech.speaker)] Cult Communicate Rune: [rendered_message]") /obj/effect/cult_ritual/cult_communication/HasProximity(var/atom/movable/AM) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 2a4e6f457a64..8b60f163ff13 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -590,6 +590,8 @@ var/list/headset_modes = list( var/splittxt = uppertext(strip_html_properly(pick(split))) splittxt = replacetext(splittxt,"YOUR","MY") splittxt = replacetext(splittxt,"YOU","I") + splittxt = replacetext(splittxt,"[real_name]'s","ME") + splittxt = replacetext(splittxt,real_name,"ME") possible_messages += list(splittxt) if(VI.filter.expressions.len) var/original = pick(get_list_of_keys(VI.filter.expressions)) @@ -605,7 +607,7 @@ var/list/headset_modes = list( "[prob(50) ? "MY EXPLOSIVE IMPLANT PHRASE IS " : ""][uppertext(copytext(E.phrase,1,rand(2,length(E.phrase))))]-") var/list/viewrange = view(client ? client.view : world.view,src) if((locate(/obj/effect/rune) in viewrange) || (locate(/obj/structure/cult) in viewrange)) - possible_messages += list("IT'S CULT","CULT [loc && prob(50) ? " IN [uppertext(get_area_name(src,TRUE,TRUE))]" : ""]") + possible_messages += list("IT'S CULT","CULT[loc && prob(50) ? " IN [uppertext(get_area_name(src,TRUE,TRUE))]" : ""]") for(var/obj/machinery/nuclearbomb/nuke in nuclear_bombs) if(text2num(nuke.r_code)) possible_messages += list("THE BOMB CODE IS [copytext(nuke.r_code,1,rand(2,length(nuke.r_code)))]-") From 729fc3495583936a4330440a17ac241609db873b Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:27:50 +0100 Subject: [PATCH 055/101] makes this work off the bat --- code/game/objects/items/devices/chameleonproj.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 42006cdc0453..f33920078f08 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -61,6 +61,12 @@ saved_overlays = target.overlays.Copy() return 1 +/obj/item/device/chameleon/arcane_act(mob/user, recursive) + . = ..() + saved_item = /obj/item/toy/syndicateballoon + saved_icon = 'icons/obj/weapons.dmi' + saved_icon_state = "syndballoon" + /obj/item/device/chameleon/proc/toggle() if(!can_use || !saved_item) return From f187d753fb25aa9e759a657edb5ac62307298e65 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:37:36 +0100 Subject: [PATCH 056/101] fixes name update --- code/game/machinery/computer/arcade/arcade_game.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/arcade/arcade_game.dm b/code/game/machinery/computer/arcade/arcade_game.dm index 5b0f2c71c7fd..5eba91a8c201 100644 --- a/code/game/machinery/computer/arcade/arcade_game.dm +++ b/code/game/machinery/computer/arcade/arcade_game.dm @@ -487,7 +487,7 @@ if(holder.stat & (NOPOWER|BROKEN|FORCEDISABLE)) return 0 else if(user in cheaters) - to_chat(usr, "[enemy_name] throws a bomb at you for trying to cheat him again.") + to_chat(usr, "[enemy_name] throws a [arcanetampered ? "shoe" : "bomb"] at you for trying to cheat him again.") explosion(holder.loc,-1,0,2, whodunnit = user)//IED sized explosion user.gib() cheaters = null @@ -500,7 +500,6 @@ return 0 /datum/arcade_game/space_villain/emag_act(mob/user) - ..() if(is_cheater(user)) return @@ -520,6 +519,7 @@ if(arcanetampered) enemy_name = "Cuban Willy" name = "Out-shoe-bomb Willy" + ..() holder.updateUsrDialog() @@ -543,6 +543,7 @@ if(emagged) enemy_name = "Cuban Willy" name = "Out-shoe-bomb Willy" + ..() holder.updateUsrDialog() From 660f078b66a2d1de5374cfe897c2e88d99f278ce Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:18:15 +0100 Subject: [PATCH 057/101] cleaner code, doesn't block both arms if in just one --- code/modules/surgery/generic.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 809a44a95961..e0b86ec55d42 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -353,9 +353,13 @@ return 0 if(isslimeperson(target) && istype(affected, /datum/organ/external/head)) return 0 + var/static/list/targetable_zones = list(GRASP_LEFT_HAND = list(LIMB_LEFT_ARM,LIMB_LEFT_HAND), GRASP_RIGHT_HAND = list(LIMB_RIGHT_ARM,LIMB_RIGHT_HAND)) for(var/obj/item/I in target.held_items) - if(I.arcanetampered && (target_zone == LIMB_LEFT_ARM || target_zone == LIMB_LEFT_HAND || target_zone == LIMB_RIGHT_ARM || target_zone == LIMB_RIGHT_HAND) && istype(I,/obj/item/weapon/reagent_containers/food/drinks)) - return 0 + if(I.arcanetampered) + var/item_index = target.is_holding_item(I) + if((item_index == GRASP_LEFT_HAND || item_index == GRASP_RIGHT_HAND) && \ + (target_zone in targetable_zones[item_index]) && istype(I,/obj/item/weapon/reagent_containers/food/drinks)) + return 0 return target_zone != LIMB_CHEST && target_zone != LIMB_GROIN && target_zone != LIMB_HEAD /datum/surgery_step/generic/cut_limb/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) From 409d8e9c7f08b1a945d6063fa1e7bd2d0658ffba Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:22:38 +0100 Subject: [PATCH 058/101] now we got a mix of stuff here --- code/modules/reagents/reagent_containers/food/drinks.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index cb5c3c8581d6..34aa7fb3c362 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -82,8 +82,10 @@ if(arcanetampered && ishuman(loc)) var/mob/living/carbon/human/H = loc if(src in H.held_items) - if(!reagents.is_full()) - H.vessel.trans_to(reagents,reagents.maximum_volume-reagents.total_volume) + if(!reagents.is_full()) + var/transfer_rate = (reagents.maximum_volume-reagents.total_volume)/2 + H.reagents.trans_to(reagents,transfer_rate) + H.vessel.trans_to(reagents,transfer_rate) H.nutrition += 3 else H.overeatduration = 0 From e21865cecede9b01a6d5e18ccae6d5d991b393bc Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:26:26 +0100 Subject: [PATCH 059/101] seems fitting soundswise --- code/modules/reagents/reagent_containers/food/drinks.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 34aa7fb3c362..35cecb25cae3 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -119,6 +119,7 @@ user.register_event(/event/death, src, nameof(src::drop_arcane())) var/mob/living/carbon/human/H = user reagents.clear_reagents() + H << 'sound/items/cautery.ogg' H.audible_scream() H.adjustHalLoss(50) H.vessel.trans_to(reagents,reagents.maximum_volume) From 770770a4b09e1520f672c06336aaaaf2805b2462 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:27:21 +0100 Subject: [PATCH 060/101] not dealing with unforeseen consequences this time --- code/modules/reagents/reagent_containers/food/drinks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 35cecb25cae3..bffbc7e632de 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -124,7 +124,7 @@ H.adjustHalLoss(50) H.vessel.trans_to(reagents,reagents.maximum_volume) update_icon() - if (can_flip && (M_SOBER in user.mutations) && (user.a_intent == I_GRAB)) + if (can_flip && !arcanetampered && (M_SOBER in user.mutations) && (user.a_intent == I_GRAB)) if (flipping && (M_CLUMSY in user.mutations) && prob(20)) to_chat(user, "Your clumsy fingers fail to catch back \the [src].") user.drop_item(src, user.loc, 1) From 3e5c46a6ac5bcf1c2a4ca4128b2ee5664d37ee97 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:28:58 +0100 Subject: [PATCH 061/101] oh yea and another one --- code/modules/reagents/reagent_containers/food/drinks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index bffbc7e632de..a1310edaa03b 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -207,7 +207,7 @@ /obj/item/weapon/reagent_containers/food/drinks/attack(mob/living/M as mob, mob/user as mob, def_zone) //Smashing on someone - if(!controlled_splash && user.a_intent == I_HURT && isGlass && molotov != 1) //To smash a bottle on someone, the user must be harm intent, the bottle must be out of glass, and we don't want a rag in here + if(!arcanetampered && !controlled_splash && user.a_intent == I_HURT && isGlass && molotov != 1) //To smash a bottle on someone, the user must be harm intent, the bottle must be out of glass, and we don't want a rag in here if(!M) //This really shouldn't be checked here, but sure return From 181480c1b8c19019cd3cd34025b270fdfc8de977 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:34:13 +0100 Subject: [PATCH 062/101] simplifies this greatly --- code/modules/mob/living/carbon/human/human_damage.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 16b97fe3b434..320bfc233d29 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -190,7 +190,7 @@ continue if(ignore_inorganics && !O.is_organic()) continue - if(arcanedrink && (O.type in list(/datum/organ/external/l_arm,/datum/organ/external/hand/l_hand,/datum/organ/external/r_arm,/datum/organ/external/hand/r_hand))) + if(arcanedrink && O.grasp_id) continue if(O.brute_dam + O.burn_dam < O.max_damage) parts += O From 8442c6955c2df5a0c7bde9b51b3807ee4d3daefe Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:36:24 +0100 Subject: [PATCH 063/101] now makes this only affect the actual arm and not both too! --- code/modules/mob/living/carbon/human/human_damage.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 320bfc233d29..5813d3630666 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -180,17 +180,19 @@ //Returns a list of damageable organs /mob/living/carbon/human/proc/get_damageable_organs(var/ignore_inorganics = FALSE) - var/arcanedrink = 0 + var/list/arcanedrinks = list() + var/arcaneindx for(var/obj/item/I in held_items) + arcaneindx++ if(I.arcanetampered && istype(I,/obj/item/weapon/reagent_containers/food/drinks)) - arcanedrink = 1 + arcanedrinks += list("[arcaneindx]") var/list/datum/organ/external/parts = list() for(var/datum/organ/external/O in organs) if(!O.is_existing()) continue if(ignore_inorganics && !O.is_organic()) continue - if(arcanedrink && O.grasp_id) + if("[O.grasp_id]" in arcanedrinks) continue if(O.brute_dam + O.burn_dam < O.max_damage) parts += O From 86ed6954d750e30ee596fbae7deeb8a6c4955ba6 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:41:41 +0100 Subject: [PATCH 064/101] cleaner --- .../mob/living/carbon/human/human_damage.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 5813d3630666..723d54014f19 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -180,19 +180,19 @@ //Returns a list of damageable organs /mob/living/carbon/human/proc/get_damageable_organs(var/ignore_inorganics = FALSE) - var/list/arcanedrinks = list() - var/arcaneindx - for(var/obj/item/I in held_items) - arcaneindx++ - if(I.arcanetampered && istype(I,/obj/item/weapon/reagent_containers/food/drinks)) - arcanedrinks += list("[arcaneindx]") + var/arcanedrink_hands = 0 + var/obj/item/weapon/reagent_containers/food/drinks/I + for(var/indx in GRASP_LEFT_HAND to GRASP_RIGHT_HAND) + I = get_held_item_by_index(indx) + if(istype(I) && I.arcanetampered) + arcanedrink_hands |= indx var/list/datum/organ/external/parts = list() for(var/datum/organ/external/O in organs) if(!O.is_existing()) continue if(ignore_inorganics && !O.is_organic()) continue - if("[O.grasp_id]" in arcanedrinks) + if(arcanedrink_hands & O.grasp_id) continue if(O.brute_dam + O.burn_dam < O.max_damage) parts += O From 6a9b4ec01913143ac7a75627d9a6438a048ee047 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:42:46 +0100 Subject: [PATCH 065/101] ah the numbers are backwards --- code/modules/mob/living/carbon/human/human_damage.dm | 2 +- code/modules/surgery/generic.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 723d54014f19..12a608e0f37b 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -182,7 +182,7 @@ /mob/living/carbon/human/proc/get_damageable_organs(var/ignore_inorganics = FALSE) var/arcanedrink_hands = 0 var/obj/item/weapon/reagent_containers/food/drinks/I - for(var/indx in GRASP_LEFT_HAND to GRASP_RIGHT_HAND) + for(var/indx in GRASP_RIGHT_HAND to GRASP_LEFT_HAND) I = get_held_item_by_index(indx) if(istype(I) && I.arcanetampered) arcanedrink_hands |= indx diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index e0b86ec55d42..181dc66aad3b 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -353,7 +353,7 @@ return 0 if(isslimeperson(target) && istype(affected, /datum/organ/external/head)) return 0 - var/static/list/targetable_zones = list(GRASP_LEFT_HAND = list(LIMB_LEFT_ARM,LIMB_LEFT_HAND), GRASP_RIGHT_HAND = list(LIMB_RIGHT_ARM,LIMB_RIGHT_HAND)) + var/static/list/targetable_zones = list(GRASP_RIGHT_HAND = list(LIMB_RIGHT_ARM,LIMB_RIGHT_HAND),GRASP_LEFT_HAND = list(LIMB_LEFT_ARM,LIMB_LEFT_HAND)) for(var/obj/item/I in target.held_items) if(I.arcanetampered) var/item_index = target.is_holding_item(I) From 1b7430a9f4b587aff0c72f269de6e4ab74497c95 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:43:12 +0100 Subject: [PATCH 066/101] line cutdown --- code/modules/mob/living/carbon/human/human_damage.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 12a608e0f37b..20ec31ba6b46 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -181,9 +181,8 @@ //Returns a list of damageable organs /mob/living/carbon/human/proc/get_damageable_organs(var/ignore_inorganics = FALSE) var/arcanedrink_hands = 0 - var/obj/item/weapon/reagent_containers/food/drinks/I for(var/indx in GRASP_RIGHT_HAND to GRASP_LEFT_HAND) - I = get_held_item_by_index(indx) + var/obj/item/weapon/reagent_containers/food/drinks/I = get_held_item_by_index(indx) if(istype(I) && I.arcanetampered) arcanedrink_hands |= indx var/list/datum/organ/external/parts = list() From 82561cdd6440599f9648052aa0e00e3c81b55f1e Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:45:21 +0100 Subject: [PATCH 067/101] bit faster cus istype can be slow --- code/modules/mob/living/carbon/human/human_damage.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 20ec31ba6b46..445467a1108e 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -183,7 +183,7 @@ var/arcanedrink_hands = 0 for(var/indx in GRASP_RIGHT_HAND to GRASP_LEFT_HAND) var/obj/item/weapon/reagent_containers/food/drinks/I = get_held_item_by_index(indx) - if(istype(I) && I.arcanetampered) + if(I && I.arcanetampered && istype(I)) arcanedrink_hands |= indx var/list/datum/organ/external/parts = list() for(var/datum/organ/external/O in organs) From d9bffced66946f07e82e4c9c4c06d317fa54aecd Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:48:18 +0100 Subject: [PATCH 068/101] no magic numbers allowed --- code/modules/reagents/reagent_containers/food/drinks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index a1310edaa03b..e8cb457534ea 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -97,7 +97,7 @@ user.drop_item(src, user.loc) cant_drop = 1 var/list/obj/structure/table/tables = list() - for(var/obj/structure/table/T in view(7,src)) + for(var/obj/structure/table/T in view(world.view,src)) tables += T var/obj/structure/table/ourtable = pick(tables) forceMove(ourtable.loc) From 2aeb492feca46498a7550661f97fa2e6552f34a8 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:02:40 +0100 Subject: [PATCH 069/101] cleanup --- .../reagent_containers/food/drinks.dm | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index e8cb457534ea..94569292a3c2 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -76,20 +76,22 @@ ..() cant_drop = 0 processing_objects.Remove(src) + var/mob/living/carbon/human/H = is_arcaneheld() + if(H) + H.unregister_event(/event/death, src, nameof(src::drop_arcane())) /obj/item/weapon/reagent_containers/food/drinks/process() . = ..() - if(arcanetampered && ishuman(loc)) - var/mob/living/carbon/human/H = loc - if(src in H.held_items) - if(!reagents.is_full()) - var/transfer_rate = (reagents.maximum_volume-reagents.total_volume)/2 - H.reagents.trans_to(reagents,transfer_rate) - H.vessel.trans_to(reagents,transfer_rate) - H.nutrition += 3 - else - H.overeatduration = 0 - H.nutrition -= 10 + var/mob/living/carbon/human/H = is_arcaneheld() + if(H) + if(!reagents.is_full()) + var/transfer_rate = (reagents.maximum_volume-reagents.total_volume)/2 + H.reagents.trans_to(reagents,transfer_rate) + H.vessel.trans_to(reagents,transfer_rate) + H.nutrition += 3 + else + H.overeatduration = 0 + H.nutrition -= 10 /obj/item/weapon/reagent_containers/food/drinks/proc/drop_arcane(mob/user, body_destroyed) user.unregister_event(/event/death, src, nameof(src::drop_arcane())) @@ -112,6 +114,19 @@ var/datum/reagent/R = addtype things2add += list(initial(R.id)) reagents.add_reagent(pick(things2add),reagents.maximum_volume/rand(4,5)) + update_icon() + +/obj/item/weapon/reagent_containers/food/drinks/proc/is_arcaneheld() + if(arcanetampered && ishuman(loc)) + var/mob/living/carbon/human/H = loc + if(src in H.held_items) + return H + +/obj/item/weapon/reagent_containers/food/drinks/Destroy() + . = ..() + var/mob/living/carbon/human/H = is_arcaneheld() + if(H) + H.unregister_event(/event/death, src, nameof(src::drop_arcane())) /obj/item/weapon/reagent_containers/food/drinks/pickup(var/mob/user) ..() From 8521680d45d5c5baf57cd9f14cbfcb6a34e63db9 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:12:40 +0100 Subject: [PATCH 070/101] hopefully fixes this --- .../objects/structures/vehicles/wheelchair.dm | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/code/game/objects/structures/vehicles/wheelchair.dm b/code/game/objects/structures/vehicles/wheelchair.dm index ad41bc87cda4..1aa282da46d4 100644 --- a/code/game/objects/structures/vehicles/wheelchair.dm +++ b/code/game/objects/structures/vehicles/wheelchair.dm @@ -176,11 +176,28 @@ new /obj/item/stack/rods(get_turf(src), 2) qdel(src) +/obj/structure/bed/chair/vehicle/wheelchair/arcane_act(mob/user) + multi_people = TRUE + ..() + return "H'LLA R'D!" + +/obj/structure/bed/chair/vehicle/wheelchair/bless() + multi_people = FALSE + ..() + /obj/structure/bed/chair/vehicle/wheelchair/multi_people nick = "hella ride" desc = "A chair with fitted wheels. Something seems off about this one..." multi_people = 1 +/obj/structure/bed/chair/vehicle/wheelchair/multi_people/arcane_act(mob/user) + . = ..() + multi_people = FALSE //l'inverse + +/obj/structure/bed/chair/vehicle/wheelchair/multi_people/bless() + ..() + multi_people = TRUE // nice try, not today + /obj/structure/bed/chair/vehicle/wheelchair/examine(mob/user) ..() if(multi_people && is_locking(/datum/locking_category/buckle/chair/vehicle) > 9) @@ -264,14 +281,6 @@ desc = "A high-riding wheelchair fitted with a powerful cell and blades under the carriage. Better get a table between you and it." var/attack_cooldown = 0 -/obj/structure/bed/chair/vehicle/wheelchair/motorized/syndicate/arcane_act(mob/user) - multi_people = TRUE - return ..() - -/obj/structure/bed/chair/vehicle/wheelchair/motorized/syndicate/bless() - multi_people = FALSE - ..() - /obj/structure/bed/chair/vehicle/wheelchair/motorized/syndicate/to_bump(var/atom/A) if(isliving(A) && !attack_cooldown) var/mob/living/L = A @@ -288,7 +297,9 @@ L.lying = 1 L.update_icons() if(arcanetampered && multi_people) - buckle_chair(L,occupant) + var/mob/living/owner = locate() in get_locked(/datum/locking_category/buckle/chair/vehicle) + if(owner) + buckle_mob(L,owner) ..() /obj/structure/bed/chair/vehicle/wheelchair/motorized/syndicate/proc/crush(var/mob/living/H,var/bloodcolor) //Basically identical to the MULE, see mulebot.dm @@ -299,7 +310,9 @@ H.apply_damage(damage, BRUTE, LIMB_LEFT_LEG) H.apply_damage(damage, BRUTE, LIMB_RIGHT_LEG) if(arcanetampered && multi_people) - buckle_chair(H,occupant) + var/mob/living/owner = locate() in get_locked(/datum/locking_category/buckle/chair/vehicle) + if(owner) + buckle_mob(H,owner) attack_cooldown = 1 spawn(10) attack_cooldown = 0 From 5f004743649637a38aaaee8bf9dea3fda590312d Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:16:25 +0100 Subject: [PATCH 071/101] necessary for this to even work --- code/game/objects/structures/vehicles/vehicle.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/vehicles/vehicle.dm b/code/game/objects/structures/vehicles/vehicle.dm index 49ce75264813..5bb6ffdbb8a8 100644 --- a/code/game/objects/structures/vehicles/vehicle.dm +++ b/code/game/objects/structures/vehicles/vehicle.dm @@ -248,7 +248,7 @@ return 1 /obj/structure/bed/chair/vehicle/proc/can_buckle(mob/M, mob/user) - if(M != user || !ishigherbeing(user) || user.restrained() || user.lying || user.stat || user.locked_to || occupant) + if((M != user && !arcanetampered) || !ishigherbeing(user) || user.restrained() || user.lying || user.stat || user.locked_to || occupant) return 0 if(!Adjacent(user) && buckle_range <= 1) return 0 From 2dfe0ce2b9d6c7a86979318689050d8f513758f4 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:20:57 +0100 Subject: [PATCH 072/101] requested --- code/game/objects/items/policetape.dm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index fa35b3055de4..cd0d7080d1f2 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -11,9 +11,16 @@ var/turf/start var/turf/end var/tape_type = /obj/item/tape + var/syndie_type = /obj/item/taperoll/syndie var/icon_base flammable = TRUE +/obj/item/taperoll/arcane_act(mob/user, recursive) + . = ..() + if(syndie_type) + new syndie_type(loc) + qdel(src) + /obj/item/tape name = "tape" icon = 'icons/policetape.dmi' @@ -24,9 +31,15 @@ w_class = W_CLASS_TINY w_type = RECYK_PLASTIC flammable = TRUE + var/syndie_type var/icon_base var/robot_compatibility +/obj/item/tape/arcane_act(mob/user, recursive) + . = ..() + if(syndie_type) + new syndie_type(loc) + qdel(src) /obj/item/taperoll/police name = "police tape" @@ -34,6 +47,7 @@ icon_state = "police_start" tape_type = /obj/item/tape/police icon_base = "police" + syndie_type = /obj/item/taperoll/syndie/police /obj/item/tape/police name = "police tape" @@ -41,6 +55,7 @@ req_access = list(access_security) icon_base = "police" robot_compatibility = MODULE_CAN_LIFT_SECTAPE + syndie_type = /obj/item/tape/police/syndie /obj/item/taperoll/engineering name = "engineering tape" @@ -48,6 +63,7 @@ icon_state = "engineering_start" tape_type = /obj/item/tape/engineering icon_base = "engineering" + syndie_type = /obj/item/taperoll/syndie/engineering /obj/item/tape/engineering name = "engineering tape" @@ -55,6 +71,7 @@ req_one_access = list(access_engine_minor,access_atmospherics) icon_base = "engineering" robot_compatibility = MODULE_CAN_LIFT_ENGITAPE + syndie_type = /obj/item/tape/engineering/syndie /obj/item/taperoll/atmos name = "atmospherics tape" @@ -62,6 +79,7 @@ icon_state = "atmos_start" tape_type = /obj/item/tape/atmos icon_base = "atmos" + syndie_type = /obj/item/taperoll/syndie/atmos /obj/item/tape/atmos name = "atmospherics tape" @@ -69,6 +87,7 @@ req_one_access = list(access_engine_major,access_atmospherics) icon_base = "atmos" robot_compatibility = MODULE_CAN_LIFT_ENGITAPE + syndie_type = /obj/item/tape/atmos/syndie /obj/item/taperoll/viro name = "biohazard tape" @@ -76,6 +95,7 @@ icon_state = "viro_start" tape_type = /obj/item/tape/viro icon_base = "viro" + syndie_type = /obj/item/taperoll/syndie/viro /obj/item/tape/viro name = "biohazard tape" @@ -83,6 +103,7 @@ req_access = list(access_medical) icon_base = "viro" robot_compatibility = MODULE_CAN_LIFT_VIROTAPE + syndie_type = /obj/item/tape/viro/syndie /obj/item/taperoll/attack_self(mob/user as mob) ..() From b768162f375eef250283eb3714b15d9a5af25206 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:26:48 +0100 Subject: [PATCH 073/101] so this works right --- code/game/objects/items/policetape.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index cd0d7080d1f2..0fc80e022957 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -38,7 +38,8 @@ /obj/item/tape/arcane_act(mob/user, recursive) . = ..() if(syndie_type) - new syndie_type(loc) + var/obj/item/tape/P =new syndie_type(loc) + P.icon_state = "[P.icon_base]_[dir]" qdel(src) /obj/item/taperoll/police From 8002ff323187895ebd0283d45038e938555fed40 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:27:02 +0100 Subject: [PATCH 074/101] this annoys me --- code/game/objects/items/policetape.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index 0fc80e022957..7ee5595c47b4 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -38,7 +38,7 @@ /obj/item/tape/arcane_act(mob/user, recursive) . = ..() if(syndie_type) - var/obj/item/tape/P =new syndie_type(loc) + var/obj/item/tape/P = new syndie_type(loc) P.icon_state = "[P.icon_base]_[dir]" qdel(src) From 090ebd42e65ee41e7d06664d4f562ea0924a46d1 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:29:03 +0100 Subject: [PATCH 075/101] hacky but consistent --- code/game/objects/items/policetape.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index 7ee5595c47b4..4b9b8c3d338a 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -39,7 +39,10 @@ . = ..() if(syndie_type) var/obj/item/tape/P = new syndie_type(loc) - P.icon_state = "[P.icon_base]_[dir]" + if(findtext(icon_state,"_door")) + P.icon_state = "[P.icon_base]_door" + else + P.icon_state = "[P.icon_base]_[dir]" qdel(src) /obj/item/taperoll/police From a2ffb18d64f7a63fcedba9db2a6c077874012fca Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:31:07 +0100 Subject: [PATCH 076/101] makes this actually work lul, turns out it was turning this off on the call --- code/modules/reagents/reagent_containers/food/drinks.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 94569292a3c2..74ceb7f3c368 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -81,7 +81,6 @@ H.unregister_event(/event/death, src, nameof(src::drop_arcane())) /obj/item/weapon/reagent_containers/food/drinks/process() - . = ..() var/mob/living/carbon/human/H = is_arcaneheld() if(H) if(!reagents.is_full()) From 205b69ee294b2c5ea5d1de5edb33e5cf24f6b21f Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:41:27 +0100 Subject: [PATCH 077/101] ah the check is here --- code/game/objects/structures/vehicles/vehicle.dm | 2 +- code/game/objects/structures/vehicles/wheelchair.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/vehicles/vehicle.dm b/code/game/objects/structures/vehicles/vehicle.dm index 5bb6ffdbb8a8..49ce75264813 100644 --- a/code/game/objects/structures/vehicles/vehicle.dm +++ b/code/game/objects/structures/vehicles/vehicle.dm @@ -248,7 +248,7 @@ return 1 /obj/structure/bed/chair/vehicle/proc/can_buckle(mob/M, mob/user) - if((M != user && !arcanetampered) || !ishigherbeing(user) || user.restrained() || user.lying || user.stat || user.locked_to || occupant) + if(M != user || !ishigherbeing(user) || user.restrained() || user.lying || user.stat || user.locked_to || occupant) return 0 if(!Adjacent(user) && buckle_range <= 1) return 0 diff --git a/code/game/objects/structures/vehicles/wheelchair.dm b/code/game/objects/structures/vehicles/wheelchair.dm index 1aa282da46d4..84aab918a69d 100644 --- a/code/game/objects/structures/vehicles/wheelchair.dm +++ b/code/game/objects/structures/vehicles/wheelchair.dm @@ -54,7 +54,7 @@ overlays -= wheel_overlay /obj/structure/bed/chair/vehicle/wheelchair/can_buckle(mob/M, mob/user) - if(!Adjacent(user) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.restrained() || user.stat || user.locked_to || (!multi_people && occupant)) //Same as vehicle/can_buckle, minus check for user.lying as well as allowing monkey and ayliens + if(!Adjacent(user) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.stat || (!multi_people && (occupant || user.restrained()|| user.locked_to))) //Same as vehicle/can_buckle, minus check for user.lying as well as allowing monkey and ayliens return 0 if(M_HULK in M.mutations) if(M == user) From 0eb7c64ae32471a0f0f80d62e0a6877f62c37400 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:46:03 +0100 Subject: [PATCH 078/101] so it does the damage too lel --- code/game/objects/structures/vehicles/wheelchair.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/game/objects/structures/vehicles/wheelchair.dm b/code/game/objects/structures/vehicles/wheelchair.dm index 84aab918a69d..7cf35c0ace1c 100644 --- a/code/game/objects/structures/vehicles/wheelchair.dm +++ b/code/game/objects/structures/vehicles/wheelchair.dm @@ -54,7 +54,7 @@ overlays -= wheel_overlay /obj/structure/bed/chair/vehicle/wheelchair/can_buckle(mob/M, mob/user) - if(!Adjacent(user) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.stat || (!multi_people && (occupant || user.restrained()|| user.locked_to))) //Same as vehicle/can_buckle, minus check for user.lying as well as allowing monkey and ayliens + if(!Adjacent(user) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.stat || (!multi_people && (occupant || user.restrained() || user.locked_to))) //Same as vehicle/can_buckle, minus check for user.lying as well as allowing monkey and ayliens return 0 if(M_HULK in M.mutations) if(M == user) @@ -297,9 +297,7 @@ L.lying = 1 L.update_icons() if(arcanetampered && multi_people) - var/mob/living/owner = locate() in get_locked(/datum/locking_category/buckle/chair/vehicle) - if(owner) - buckle_mob(L,owner) + crush(L) ..() /obj/structure/bed/chair/vehicle/wheelchair/motorized/syndicate/proc/crush(var/mob/living/H,var/bloodcolor) //Basically identical to the MULE, see mulebot.dm From 6f06489e07987a7e504b96ca9a2637701a3812dd Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:48:01 +0100 Subject: [PATCH 079/101] oh wow that's why this was broke --- .../reagents/reagent_containers/food/drinks.dm | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 74ceb7f3c368..83559aa3004c 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -91,6 +91,11 @@ else H.overeatduration = 0 H.nutrition -= 10 + var/turf/loca = get_turf(src) + if(lit && loca) +// to_chat(world, "Burning...") + loca.hotspot_expose(700, SMALL_FLAME) + return /obj/item/weapon/reagent_containers/food/drinks/proc/drop_arcane(mob/user, body_destroyed) user.unregister_event(/event/death, src, nameof(src::drop_arcane())) @@ -2366,14 +2371,6 @@ return - -/obj/item/weapon/reagent_containers/food/drinks/process() - var/turf/loca = get_turf(src) - if(lit && loca) -// to_chat(world, "Burning...") - loca.hotspot_expose(700, SMALL_FLAME) - return - // Sliding from one table to another /obj/item/weapon/reagent_containers/food/drinks/MouseDropFrom(atom/over_object,atom/src_location,atom/over_location,src_control,over_control,params) var/mob/user = usr From db6daeda3b3e46cdf966660cdd4c14d81ce38a57 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:53:06 +0100 Subject: [PATCH 080/101] much simpler and actually works --- code/game/objects/items/policetape.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index 4b9b8c3d338a..25bf828c9d86 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -39,10 +39,7 @@ . = ..() if(syndie_type) var/obj/item/tape/P = new syndie_type(loc) - if(findtext(icon_state,"_door")) - P.icon_state = "[P.icon_base]_door" - else - P.icon_state = "[P.icon_base]_[dir]" + P.icon_state = icon_state qdel(src) /obj/item/taperoll/police From cc9d30cff6c5d00684b866495d6432fe0cfc05d5 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:57:17 +0100 Subject: [PATCH 081/101] restrict this to here pls --- code/game/objects/structures/vehicles/wheelchair.dm | 2 +- code/modules/reagents/reagent_containers/food/drinks.dm | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/vehicles/wheelchair.dm b/code/game/objects/structures/vehicles/wheelchair.dm index 7cf35c0ace1c..7253ecb711de 100644 --- a/code/game/objects/structures/vehicles/wheelchair.dm +++ b/code/game/objects/structures/vehicles/wheelchair.dm @@ -54,7 +54,7 @@ overlays -= wheel_overlay /obj/structure/bed/chair/vehicle/wheelchair/can_buckle(mob/M, mob/user) - if(!Adjacent(user) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.stat || (!multi_people && (occupant || user.restrained() || user.locked_to))) //Same as vehicle/can_buckle, minus check for user.lying as well as allowing monkey and ayliens + if(!Adjacent(user) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.stat || ((user.restrained() || user.locked_to)) && !arcanetampered) || (!multi_people && occupant) //Same as vehicle/can_buckle, minus check for user.lying as well as allowing monkey and ayliens return 0 if(M_HULK in M.mutations) if(M == user) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 83559aa3004c..b22d90fa2320 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -85,8 +85,10 @@ if(H) if(!reagents.is_full()) var/transfer_rate = (reagents.maximum_volume-reagents.total_volume)/2 - H.reagents.trans_to(reagents,transfer_rate) - H.vessel.trans_to(reagents,transfer_rate) + if(H.reagents.total_volume) + H.reagents.trans_to(reagents,transfer_rate) + if(H.vessel.total_volume) + H.vessel.trans_to(reagents,transfer_rate) H.nutrition += 3 else H.overeatduration = 0 From 8bd6c4a06e46b3f07311d9fcd8d8516445ac3824 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 01:58:23 +0100 Subject: [PATCH 082/101] syntax... --- code/game/objects/structures/vehicles/wheelchair.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/vehicles/wheelchair.dm b/code/game/objects/structures/vehicles/wheelchair.dm index 7253ecb711de..e0aa63bd8e8f 100644 --- a/code/game/objects/structures/vehicles/wheelchair.dm +++ b/code/game/objects/structures/vehicles/wheelchair.dm @@ -54,7 +54,7 @@ overlays -= wheel_overlay /obj/structure/bed/chair/vehicle/wheelchair/can_buckle(mob/M, mob/user) - if(!Adjacent(user) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.stat || ((user.restrained() || user.locked_to)) && !arcanetampered) || (!multi_people && occupant) //Same as vehicle/can_buckle, minus check for user.lying as well as allowing monkey and ayliens + if(!Adjacent(user) || (!ishigherbeing(user) && !isalien(user) && !ismonkey(user)) || user.stat || (((user.restrained() || user.locked_to)) && !arcanetampered) || (!multi_people && occupant)) //Same as vehicle/can_buckle, minus check for user.lying as well as allowing monkey and ayliens return 0 if(M_HULK in M.mutations) if(M == user) From 957f5997bb666420d503daa03cc00b8d68aee1ea Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:03:47 +0100 Subject: [PATCH 083/101] accuracy --- .../reagent_containers/food/drinks.dm | 61 ++++++++++--------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index b22d90fa2320..87feab29a2f8 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -100,27 +100,30 @@ return /obj/item/weapon/reagent_containers/food/drinks/proc/drop_arcane(mob/user, body_destroyed) - user.unregister_event(/event/death, src, nameof(src::drop_arcane())) - cant_drop = 0 - user.drop_item(src, user.loc) - cant_drop = 1 - var/list/obj/structure/table/tables = list() - for(var/obj/structure/table/T in view(world.view,src)) - tables += T - var/obj/structure/table/ourtable = pick(tables) - forceMove(ourtable.loc) - reagents.clear_reagents() - var/static/list/blocked = list( - /datum/reagent/drink, - /datum/reagent/drink/cold, - ) - var/list/things_can_add = existing_typesof(/datum/reagent/drink) - blocked - var/list/things2add - for(var/addtype in things_can_add) - var/datum/reagent/R = addtype - things2add += list(initial(R.id)) - reagents.add_reagent(pick(things2add),reagents.maximum_volume/rand(4,5)) - update_icon() + if(prob(75)) // percent of time in the SCP it does this + user.unregister_event(/event/death, src, nameof(src::drop_arcane())) + cant_drop = 0 + user.drop_item(src, user.loc) + cant_drop = 1 + var/list/obj/structure/table/tables = list() + for(var/obj/structure/table/T in view(world.view,src)) + tables += T + var/obj/structure/table/ourtable = pick(tables) + forceMove(ourtable.loc) + reagents.clear_reagents() + var/static/list/blocked = list( + /datum/reagent/drink, + /datum/reagent/drink/cold, + ) + var/list/things_can_add = existing_typesof(/datum/reagent/drink) - blocked + var/list/things2add + for(var/addtype in things_can_add) + var/datum/reagent/R = addtype + things2add += list(initial(R.id)) + reagents.add_reagent(pick(things2add),reagents.maximum_volume/rand(4,5)) + update_icon() + else + bless() /obj/item/weapon/reagent_containers/food/drinks/proc/is_arcaneheld() if(arcanetampered && ishuman(loc)) @@ -137,13 +140,15 @@ /obj/item/weapon/reagent_containers/food/drinks/pickup(var/mob/user) ..() if(ishuman(user) && arcanetampered) // wizards turn it into SCP-198 - user.register_event(/event/death, src, nameof(src::drop_arcane())) - var/mob/living/carbon/human/H = user - reagents.clear_reagents() - H << 'sound/items/cautery.ogg' - H.audible_scream() - H.adjustHalLoss(50) - H.vessel.trans_to(reagents,reagents.maximum_volume) + spawn(rand(20,50)) // how long it takes to kick in in the SCP + if(is_arcaneheld()) + user.register_event(/event/death, src, nameof(src::drop_arcane())) + var/mob/living/carbon/human/H = user + reagents.clear_reagents() + H << 'sound/items/cautery.ogg' + H.audible_scream() + H.adjustHalLoss(50) + H.vessel.trans_to(reagents,reagents.maximum_volume) update_icon() if (can_flip && !arcanetampered && (M_SOBER in user.mutations) && (user.a_intent == I_GRAB)) if (flipping && (M_CLUMSY in user.mutations) && prob(20)) From c922ff627e3c9eb0c394f6cb7cb53f48bca186f0 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:04:09 +0100 Subject: [PATCH 084/101] indents... --- .../reagents/reagent_containers/food/drinks.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 87feab29a2f8..f1561656e93f 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -141,14 +141,14 @@ ..() if(ishuman(user) && arcanetampered) // wizards turn it into SCP-198 spawn(rand(20,50)) // how long it takes to kick in in the SCP - if(is_arcaneheld()) - user.register_event(/event/death, src, nameof(src::drop_arcane())) - var/mob/living/carbon/human/H = user - reagents.clear_reagents() - H << 'sound/items/cautery.ogg' - H.audible_scream() - H.adjustHalLoss(50) - H.vessel.trans_to(reagents,reagents.maximum_volume) + if(is_arcaneheld()) + user.register_event(/event/death, src, nameof(src::drop_arcane())) + var/mob/living/carbon/human/H = user + reagents.clear_reagents() + H << 'sound/items/cautery.ogg' + H.audible_scream() + H.adjustHalLoss(50) + H.vessel.trans_to(reagents,reagents.maximum_volume) update_icon() if (can_flip && !arcanetampered && (M_SOBER in user.mutations) && (user.a_intent == I_GRAB)) if (flipping && (M_CLUMSY in user.mutations) && prob(20)) From f719831e1ca914304bf610d0266e57a51eed7362 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:08:39 +0100 Subject: [PATCH 085/101] cleaner --- code/modules/reagents/reagent_containers/food/drinks.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index f1561656e93f..17621d050b0b 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -68,7 +68,6 @@ /obj/item/weapon/reagent_containers/food/drinks/arcane_act(mob/user) ..() - cant_drop = 1 processing_objects.Add(src) return prob(50) ? "D'TA EX'P'GED!" : "R'D'CTED!" @@ -125,8 +124,8 @@ else bless() -/obj/item/weapon/reagent_containers/food/drinks/proc/is_arcaneheld() - if(arcanetampered && ishuman(loc)) +/obj/item/weapon/reagent_containers/food/drinks/proc/is_arcaneheld(checks_cantdrop = TRUE) + if(arcanetampered && ishuman(loc) && checks_cantdrop && cant_drop) var/mob/living/carbon/human/H = loc if(src in H.held_items) return H @@ -141,7 +140,7 @@ ..() if(ishuman(user) && arcanetampered) // wizards turn it into SCP-198 spawn(rand(20,50)) // how long it takes to kick in in the SCP - if(is_arcaneheld()) + if(is_arcaneheld(FALSE)) user.register_event(/event/death, src, nameof(src::drop_arcane())) var/mob/living/carbon/human/H = user reagents.clear_reagents() @@ -149,6 +148,7 @@ H.audible_scream() H.adjustHalLoss(50) H.vessel.trans_to(reagents,reagents.maximum_volume) + cant_drop = 1 update_icon() if (can_flip && !arcanetampered && (M_SOBER in user.mutations) && (user.a_intent == I_GRAB)) if (flipping && (M_CLUMSY in user.mutations) && prob(20)) From 0f51200b47a323e7a877336779029fe57d52e42a Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:09:30 +0100 Subject: [PATCH 086/101] i trust this more --- code/modules/reagents/reagent_containers/food/drinks.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 17621d050b0b..92735bd5765e 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -125,7 +125,9 @@ bless() /obj/item/weapon/reagent_containers/food/drinks/proc/is_arcaneheld(checks_cantdrop = TRUE) - if(arcanetampered && ishuman(loc) && checks_cantdrop && cant_drop) + if(checks_cantdrop && !cant_drop) + return + if(arcanetampered && ishuman(loc)) var/mob/living/carbon/human/H = loc if(src in H.held_items) return H From 9fb92a4cc901d72310f2828f9ae85b451e6132ee Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:11:44 +0100 Subject: [PATCH 087/101] more variety --- code/modules/reagents/reagent_containers/food/drinks.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 92735bd5765e..01379c1c4e09 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -108,8 +108,8 @@ for(var/obj/structure/table/T in view(world.view,src)) tables += T var/obj/structure/table/ourtable = pick(tables) - forceMove(ourtable.loc) - reagents.clear_reagents() + var/spawntype = pick(subtypesof(/obj/item/weapon/reagent_containers/food/drinks)) + D.reagents.clear_reagents() var/static/list/blocked = list( /datum/reagent/drink, /datum/reagent/drink/cold, @@ -119,7 +119,7 @@ for(var/addtype in things_can_add) var/datum/reagent/R = addtype things2add += list(initial(R.id)) - reagents.add_reagent(pick(things2add),reagents.maximum_volume/rand(4,5)) + D.reagents.add_reagent(pick(things2add),reagents.maximum_volume/rand(4,5)) update_icon() else bless() From cd0ba9704ef4d2fb993b42dc9010e024c03cfaba Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:12:16 +0100 Subject: [PATCH 088/101] thing itself --- code/modules/reagents/reagent_containers/food/drinks.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 01379c1c4e09..626b52916867 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -109,6 +109,8 @@ tables += T var/obj/structure/table/ourtable = pick(tables) var/spawntype = pick(subtypesof(/obj/item/weapon/reagent_containers/food/drinks)) + var/obj/item/weapon/reagent_containers/food/drinks/D = new(ourtable.loc) + D.arcane_act() D.reagents.clear_reagents() var/static/list/blocked = list( /datum/reagent/drink, From 51eadd5e349de2e81a3b569e7e3f47292f93deb1 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:13:23 +0100 Subject: [PATCH 089/101] the way it's done --- code/game/atoms.dm | 2 +- code/modules/reagents/reagent_containers/food/drinks.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index bddc4c2568be..ff5ade72a51f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -882,7 +882,7 @@ its easier to just keep the beam vertical. /mob/var/list/atom/arcane_tampered_atoms = list() /atom/proc/arcane_act(var/mob/user, var/recursive = FALSE) - if(user) + if(ismob(user)) arcanetampered = user user.arcane_tampered_atoms.Add(src) else diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 626b52916867..5736b56a428f 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -110,7 +110,7 @@ var/obj/structure/table/ourtable = pick(tables) var/spawntype = pick(subtypesof(/obj/item/weapon/reagent_containers/food/drinks)) var/obj/item/weapon/reagent_containers/food/drinks/D = new(ourtable.loc) - D.arcane_act() + D.arcane_act(arcanetampered) D.reagents.clear_reagents() var/static/list/blocked = list( /datum/reagent/drink, From 2131fd17bf70eac30500bf89b0c8ee3f03234168 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:13:57 +0100 Subject: [PATCH 090/101] oh whoops --- code/modules/reagents/reagent_containers/food/drinks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 5736b56a428f..3389c9b45a84 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -109,7 +109,7 @@ tables += T var/obj/structure/table/ourtable = pick(tables) var/spawntype = pick(subtypesof(/obj/item/weapon/reagent_containers/food/drinks)) - var/obj/item/weapon/reagent_containers/food/drinks/D = new(ourtable.loc) + var/obj/item/weapon/reagent_containers/food/drinks/D = new spawntype(ourtable.loc) D.arcane_act(arcanetampered) D.reagents.clear_reagents() var/static/list/blocked = list( From 040e9792ab8242a0f7e4db53edc7844d27932025 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:18:52 +0100 Subject: [PATCH 091/101] forgot this!!! --- code/modules/reagents/reagent_containers/food/drinks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 3389c9b45a84..a824b9e9cd52 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -122,7 +122,7 @@ var/datum/reagent/R = addtype things2add += list(initial(R.id)) D.reagents.add_reagent(pick(things2add),reagents.maximum_volume/rand(4,5)) - update_icon() + qdel(src) else bless() From a1a6dd6675086840d2253cd84e15bdb95df3f15b Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:19:58 +0100 Subject: [PATCH 092/101] better --- code/modules/reagents/reagent_containers/food/drinks.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index a824b9e9cd52..398d4622193b 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -100,10 +100,6 @@ /obj/item/weapon/reagent_containers/food/drinks/proc/drop_arcane(mob/user, body_destroyed) if(prob(75)) // percent of time in the SCP it does this - user.unregister_event(/event/death, src, nameof(src::drop_arcane())) - cant_drop = 0 - user.drop_item(src, user.loc) - cant_drop = 1 var/list/obj/structure/table/tables = list() for(var/obj/structure/table/T in view(world.view,src)) tables += T @@ -125,6 +121,7 @@ qdel(src) else bless() + user.drop_item(src, user.loc) /obj/item/weapon/reagent_containers/food/drinks/proc/is_arcaneheld(checks_cantdrop = TRUE) if(checks_cantdrop && !cant_drop) From 3f8d29f5e46cfa128a8deaf591cface827fc0f5e Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:20:49 +0100 Subject: [PATCH 093/101] more accurate --- code/modules/reagents/reagent_containers/food/drinks.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 398d4622193b..0bcfbcecda03 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -120,8 +120,10 @@ D.reagents.add_reagent(pick(things2add),reagents.maximum_volume/rand(4,5)) qdel(src) else - bless() + cant_drop = 0 user.drop_item(src, user.loc) + reagents.clear_reagents() + cant_drop = 1 /obj/item/weapon/reagent_containers/food/drinks/proc/is_arcaneheld(checks_cantdrop = TRUE) if(checks_cantdrop && !cant_drop) From ab1b654a8661651edf10e57e5918382f5c1b0895 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:22:53 +0100 Subject: [PATCH 094/101] more accurate feedback message --- code/modules/reagents/reagent_containers/food/drinks.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 0bcfbcecda03..6bdc3b446f42 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -148,6 +148,7 @@ var/mob/living/carbon/human/H = user reagents.clear_reagents() H << 'sound/items/cautery.ogg' + to_chat(H,"You feel a sharp burning pain in your hard as \the [src] sticks to it!") H.audible_scream() H.adjustHalLoss(50) H.vessel.trans_to(reagents,reagents.maximum_volume) From ec1aa89ce9aa1ef8db0d0efcde7c83d8281f2581 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:25:42 +0100 Subject: [PATCH 095/101] only this type, also better checks --- code/modules/mob/living/carbon/human/human_damage.dm | 2 +- code/modules/surgery/generic.dm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 445467a1108e..6c635f6a824e 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -183,7 +183,7 @@ var/arcanedrink_hands = 0 for(var/indx in GRASP_RIGHT_HAND to GRASP_LEFT_HAND) var/obj/item/weapon/reagent_containers/food/drinks/I = get_held_item_by_index(indx) - if(I && I.arcanetampered && istype(I)) + if(I && I.arcanetampered && I.cant_drop && istype(I)) arcanedrink_hands |= indx var/list/datum/organ/external/parts = list() for(var/datum/organ/external/O in organs) diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 181dc66aad3b..a7f742313422 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -354,8 +354,8 @@ if(isslimeperson(target) && istype(affected, /datum/organ/external/head)) return 0 var/static/list/targetable_zones = list(GRASP_RIGHT_HAND = list(LIMB_RIGHT_ARM,LIMB_RIGHT_HAND),GRASP_LEFT_HAND = list(LIMB_LEFT_ARM,LIMB_LEFT_HAND)) - for(var/obj/item/I in target.held_items) - if(I.arcanetampered) + for(var/obj/item/weapon/reagent_containers/food/drinks/I in target.held_items) + if(I.arcanetampered && I.cant_drop) var/item_index = target.is_holding_item(I) if((item_index == GRASP_LEFT_HAND || item_index == GRASP_RIGHT_HAND) && \ (target_zone in targetable_zones[item_index]) && istype(I,/obj/item/weapon/reagent_containers/food/drinks)) From a90712c2f09d5e56f1642a5cd808fc29f75d6902 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:28:36 +0100 Subject: [PATCH 096/101] we delayed it, remember? --- code/modules/reagents/reagent_containers/food/drinks.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 6bdc3b446f42..c39a023c56f2 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -123,7 +123,6 @@ cant_drop = 0 user.drop_item(src, user.loc) reagents.clear_reagents() - cant_drop = 1 /obj/item/weapon/reagent_containers/food/drinks/proc/is_arcaneheld(checks_cantdrop = TRUE) if(checks_cantdrop && !cant_drop) From 633f3c49e42e6d74560a0d9c078d20160acdea8d Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:39:56 +0100 Subject: [PATCH 097/101] not a fan of this --- code/modules/projectiles/projectile/special.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 4c683fbbf168..caccd2cac114 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -390,10 +390,7 @@ /obj/item/projectile/swap/on_hit(var/atom/target, var/blocked = 0) var/turf/T = get_turf(target) do_teleport(target, firer.loc) - if(arcanetampered) - firer.dimensional_push() - else - do_teleport(firer, T) + do_teleport(firer, T) /obj/item/projectile/swap/advanced pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSRAILING From 6f085fb0606ac384eb2c2c623cac381a1bff2713 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:52:33 +0100 Subject: [PATCH 098/101] FIXES THIS, also does some user sanity checks --- code/modules/spells/targeted/push.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/spells/targeted/push.dm b/code/modules/spells/targeted/push.dm index 6e6738c25e1f..b97c8f2e088d 100644 --- a/code/modules/spells/targeted/push.dm +++ b/code/modules/spells/targeted/push.dm @@ -35,7 +35,7 @@ /spell/targeted/push/cast(var/list/targets) ..() for(var/atom/movable/target in targets) - if(target.dimensional_push()) + if(target.dimensional_push(holder)) score.dimensionalpushes++ /spell/targeted/push/get_upgrade_price(upgrade_type) @@ -57,7 +57,7 @@ areas_to_check -= prospective continue var/turf/T = pick(prospective_turfs) - if(!(T.z == user.z)) //Selected turf is not in the same z-level + if(user && !(T.z == user.z)) //Selected turf is not in the same z-level areas_to_check -= prospective continue thearea = prospective //We found it @@ -67,7 +67,7 @@ continue var/list/L = list() for(var/turf/T in get_area_turfs(thearea.type)) - if(!T.density && (T.z == user.z)) //In case an area somehow shows up in multiple z-levels + if(!T.density && user && (T.z == user.z)) //In case an area somehow shows up in multiple z-levels var/clear = 1 for(var/obj/O in T) if(O.density) From ee3b6e2a6078879aab18f83301eaf93b2f9ff1ef Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sun, 6 Oct 2024 02:58:33 +0100 Subject: [PATCH 099/101] logic cleanup, now works with no user var --- code/modules/spells/targeted/push.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/spells/targeted/push.dm b/code/modules/spells/targeted/push.dm index b97c8f2e088d..af50f76b61cd 100644 --- a/code/modules/spells/targeted/push.dm +++ b/code/modules/spells/targeted/push.dm @@ -57,7 +57,7 @@ areas_to_check -= prospective continue var/turf/T = pick(prospective_turfs) - if(user && !(T.z == user.z)) //Selected turf is not in the same z-level + if(T.z != src.z) //Selected turf is not in the same z-level areas_to_check -= prospective continue thearea = prospective //We found it @@ -67,7 +67,7 @@ continue var/list/L = list() for(var/turf/T in get_area_turfs(thearea.type)) - if(!T.density && user && (T.z == user.z)) //In case an area somehow shows up in multiple z-levels + if(!T.density && T.z != src.z) //In case an area somehow shows up in multiple z-levels var/clear = 1 for(var/obj/O in T) if(O.density) From 198f03c6fcea10fb83bb11a1c94ae45ae9a8e199 Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sat, 12 Oct 2024 00:12:35 +0100 Subject: [PATCH 100/101] removes arcane tamper drinks stopping arm removal --- code/modules/mob/living/carbon/human/human_damage.dm | 7 ------- code/modules/surgery/generic.dm | 7 ------- 2 files changed, 14 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 6c635f6a824e..5c35e1e5cae2 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -180,19 +180,12 @@ //Returns a list of damageable organs /mob/living/carbon/human/proc/get_damageable_organs(var/ignore_inorganics = FALSE) - var/arcanedrink_hands = 0 - for(var/indx in GRASP_RIGHT_HAND to GRASP_LEFT_HAND) - var/obj/item/weapon/reagent_containers/food/drinks/I = get_held_item_by_index(indx) - if(I && I.arcanetampered && I.cant_drop && istype(I)) - arcanedrink_hands |= indx var/list/datum/organ/external/parts = list() for(var/datum/organ/external/O in organs) if(!O.is_existing()) continue if(ignore_inorganics && !O.is_organic()) continue - if(arcanedrink_hands & O.grasp_id) - continue if(O.brute_dam + O.burn_dam < O.max_damage) parts += O return parts diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index a7f742313422..66aa2ed5aec0 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -353,13 +353,6 @@ return 0 if(isslimeperson(target) && istype(affected, /datum/organ/external/head)) return 0 - var/static/list/targetable_zones = list(GRASP_RIGHT_HAND = list(LIMB_RIGHT_ARM,LIMB_RIGHT_HAND),GRASP_LEFT_HAND = list(LIMB_LEFT_ARM,LIMB_LEFT_HAND)) - for(var/obj/item/weapon/reagent_containers/food/drinks/I in target.held_items) - if(I.arcanetampered && I.cant_drop) - var/item_index = target.is_holding_item(I) - if((item_index == GRASP_LEFT_HAND || item_index == GRASP_RIGHT_HAND) && \ - (target_zone in targetable_zones[item_index]) && istype(I,/obj/item/weapon/reagent_containers/food/drinks)) - return 0 return target_zone != LIMB_CHEST && target_zone != LIMB_GROIN && target_zone != LIMB_HEAD /datum/surgery_step/generic/cut_limb/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) From 092fd428f8436fb8ab2ef9d11fc1104d217ed96f Mon Sep 17 00:00:00 2001 From: SECBATON GRIFFON <87321915+SECBATON-GRIFFON@users.noreply.github.com> Date: Sat, 12 Oct 2024 00:22:41 +0100 Subject: [PATCH 101/101] actually this is too much, wizards can get both spells and make the round hell --- .../mob/living/carbon/human/life/handle_disabilities.dm | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life/handle_disabilities.dm b/code/modules/mob/living/carbon/human/life/handle_disabilities.dm index f7367df4dd6f..a6a3e4bfa6f9 100644 --- a/code/modules/mob/living/carbon/human/life/handle_disabilities.dm +++ b/code/modules/mob/living/carbon/human/life/handle_disabilities.dm @@ -59,15 +59,6 @@ drop_item() audible_cough(src) - if(arcanetampered) - for(var/mob/living/carbon/human/L in shuffle(view(client ? client.view : world.view,src))) - if(L.muted_letters?.len) - var/list/all_letters = list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") - if(prob(50)) - all_letters -= L.muted_letters // weighted towards the wrong ones! - say("[pick(all_letters)]") - break - if(disabilities & TOURETTES) if(prob(7)) say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]")