Fixes a few bugs. (#17048)

* Fixes a few bugs.

* bodybag

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
Matt Atlas
2023-08-10 13:04:05 +02:00
committed by GitHub
parent 7a21896792
commit ad83af2bc3
7 changed files with 56 additions and 122 deletions

View File

@@ -674,7 +674,6 @@
#include "code\game\gamemodes\technomancer\spells\dispel.dm"
#include "code\game\gamemodes\technomancer\spells\energy_siphon.dm"
#include "code\game\gamemodes\technomancer\spells\flame_tongue.dm"
#include "code\game\gamemodes\technomancer\spells\gambit.dm"
#include "code\game\gamemodes\technomancer\spells\illusion.dm"
#include "code\game\gamemodes\technomancer\spells\instability_tap.dm"
#include "code\game\gamemodes\technomancer\spells\mark_recall.dm"

View File

@@ -14,7 +14,7 @@
if(!C.prefs) //This is to avoid null.toggles runtime error while still initialyzing players preferences
return
if(C.prefs.toggles & CHAT_DEBUGLOGS)
to_chat(C, "DEBUG: [text]")
to_chat(C, "<span class='debug'>DEBUG: [text]</span>")
send_gelf_log(short_message = text, long_message = "[time_stamp()]: [text]", level = level, category = "DEBUG")
/// Logging for loading and caching assets

View File

@@ -1,117 +0,0 @@
/datum/technomancer/spell/gambit
name = "Gambit"
desc = "This function causes you to receive a random function, including those which you haven't purchased."
// enhancement_desc = "Makes results less random and more biased towards what the function thinks you need in your current situation."
enhancement_desc = "Instead of a purely random spell, it will give you a \"random\" spell."
spell_power_desc = "Makes certain rare functions possible to acquire via Gambit which cannot be obtained otherwise, if above 100%."
ability_icon_state = "tech_gambit"
cost = 50
obj_path = /obj/item/spell/gambit
category = UTILITY_SPELLS
/var/global/list/all_technomancer_gambit_spells = subtypesof(/obj/item/spell) - list(
/obj/item/spell/gambit,
/obj/item/spell/projectile,
/obj/item/spell/aura,
/obj/item/spell/insert,
/obj/item/spell/spawner,
/obj/item/spell/summon,
/obj/item/spell/modifier)
/obj/item/spell/gambit
name = "gambit"
desc = "Do you feel lucky?"
icon_state = "gambit"
cast_methods = CAST_USE
aspect = ASPECT_UNSTABLE
/obj/item/spell/gambit/on_use_cast(mob/living/carbon/human/user)
. = ..()
if(pay_energy(200))
adjust_instability(3)
if(check_for_scepter())
give_new_spell(biased_random_spell())
else
give_new_spell(random_spell())
qdel(src)
/obj/item/spell/gambit/proc/give_new_spell(var/spell_type)
owner.drop_from_inventory(src, null)
owner.place_spell_in_hand(spell_type)
// Gives a random spell.
/obj/item/spell/gambit/proc/random_spell()
var/list/potential_spells = all_technomancer_gambit_spells.Copy()
return pick(potential_spells)
// Gives a "random" spell.
/obj/item/spell/gambit/proc/biased_random_spell()
var/list/potential_spells = list()
// First the spell will concern itself with the health of the technomancer.
if(prob(owner.getBruteLoss() + owner.getBruteLoss() * 2)) // Having 20 brute means a 40% chance of being added to the pool.
if(!owner.isSynthetic())
potential_spells |= /obj/item/spell/modifier/mend_life
else
potential_spells |= /obj/item/spell/modifier/mend_synthetic
// Second, the spell will try to prepare the technomancer for threats.
var/hostile_mobs = 0 // Counts how many hostile mobs. Higher numbers make it more likely for AoE spells to be chosen.
for(var/mob/living/L in view(owner))
// Spiders, carp... bears.
if(istype(L, /mob/living/simple_animal))
var/mob/living/simple_animal/SM = L
if(!is_ally(SM))
hostile_mobs++
if(SM.summoned || SM.supernatural) // Our creations might be trying to kill us.
potential_spells |= /obj/item/spell/abjuration
// Always assume borgs are hostile.
if(istype(L, /mob/living/silicon/robot))
if(!istype(L, /mob/living/silicon/robot/drone)) // Drones are okay, however.
hostile_mobs++
potential_spells |= /obj/item/spell/projectile/ionic_bolt
// Finally we get to humanoids.
if(istype(L, /mob/living/carbon/human))
var/mob/living/carbon/human/H = L
if(is_ally(H)) // Don't get scared by our apprentice.
continue
for(var/obj/item/I in list(H.l_hand, H.r_hand))
// Guns are scary.
if(istype(I, /obj/item/gun)) // Toy guns will count as well but oh well.
hostile_mobs++
continue
// Strong melee weapons are scary as well.
else if(I.force >= 15)
hostile_mobs++
continue
if(hostile_mobs)
potential_spells |= /obj/item/spell/shield
potential_spells |= /obj/item/spell/reflect
potential_spells |= /obj/item/spell/targeting_matrix
potential_spells |= /obj/item/spell/warp_strike
if(hostile_mobs >= 3) // Lots of baddies, give them AoE.
potential_spells |= /obj/item/spell/spawner/fire_blast
potential_spells |= /obj/item/spell/condensation
potential_spells |= /obj/item/spell/aura/frost
else
potential_spells |= /obj/item/spell/projectile/beam
potential_spells |= /obj/item/spell/projectile/overload
potential_spells |= /obj/item/spell/projectile/force_missile
potential_spells |= /obj/item/spell/projectile/lightning
// Third priority is recharging the core.
if(core.energy / core.max_energy <= 0.5)
potential_spells |= /obj/item/spell/energy_siphon
potential_spells |= /obj/item/spell/instability_tap
// Fallback method in case nothing gets added.
if(!potential_spells.len)
potential_spells = all_technomancer_gambit_spells.Copy()
return pick(potential_spells)

View File

@@ -133,6 +133,11 @@
"<b>[user.name]</b> unbuckles [MA.name].", \
SPAN_NOTICE("You were unbuckled from [src] by [user.name]."),\
SPAN_NOTICE("You hear metal clanking."))
else if(isliving(user) && isobj(MA))
user.visible_message(\
"<b>[user]</b> unbuckles \the [MA] from [src].",\
SPAN_NOTICE("You unbuckle \the [MA] from [src]."),\
SPAN_NOTICE("You hear metal clanking."))
else
MA.visible_message(\
"<b>[MA.name]</b> unbuckles themselves.",\

View File

@@ -5,7 +5,7 @@
program_key_icon_state = "teal_key"
extended_desc = "This program connects to life signs monitoring system to provide basic information on crew health."
required_access_run = access_medical
required_access_download = access_cmo
required_access_download = access_medical
requires_ntnet = TRUE
network_destination = "crew lifesigns monitoring system"
size = 11

View File

@@ -29,7 +29,7 @@
else if(psionic_rank == PSI_RANK_HARMONIOUS)
aura_color = "#64c464"
if(psionic_rank > PSI_RANK_SENSITIVE && last_psionic_rank < PSI_RANK_HARMONIOUS)
if(psionic_rank > PSI_RANK_SENSITIVE && (get_rank() != last_psionic_rank))
switch(psionic_rank)
if(PSI_RANK_HARMONIOUS)
psi_points = PSI_POINTS_HARMONIOUS
@@ -37,11 +37,13 @@
psi_points = PSI_POINTS_APEX
if(PSI_RANK_LIMITLESS)
psi_points = PSI_POINTS_LIMITLESS
else
psi_points = 0
/// We had special abilities unique to our level, so get rid of 'em.
if(last_psionic_rank > PSI_RANK_HARMONIOUS)
wipe_user_abilities()
if(last_psionic_rank > PSI_RANK_SENSITIVE && psionic_rank < PSI_RANK_HARMONIOUS)
if(last_psionic_rank > PSI_RANK_SENSITIVE && psionic_rank < PSI_RANK_HARMONIOUS && (get_rank() != last_psionic_rank))
psi_points = 0
wipe_user_abilities()

View File

@@ -0,0 +1,45 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
# balance
# admin
# backend
# security
# refactor
#################################
# Your name.
author: MattAtlas
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- bugfix: "Fixed debug logs not being tagged as debug in the chat."
- bugfix: "Fixed relogging giving you more psi-points."
- bugfix: "Fixed medborgs being unable to download suit sensors."
- rscdel: "Removed the Gambit technomancer spell as it was a hacky and now buggy implementation."
- bugfix: "Fixed roller bags unbuckling themselves."