From b3ad352a9668301e608fb9610d4331130025350f Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 16 Dec 2019 08:10:41 -0700 Subject: [PATCH] stuff --- code/game/objects/items/devices/paicard.dm | 7 +++++- code/modules/mob/living/silicon/pai/pai.dm | 24 +++++++++++++++---- .../mob/living/silicon/pai/pai_shell.dm | 20 +++++++--------- code/modules/mob/living/silicon/pai/say.dm | 8 ++++++- .../mob/living/silicon/pai/software.dm | 5 +++- 5 files changed, 44 insertions(+), 20 deletions(-) diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 7dc2f1d60b..62422bcf62 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -8,7 +8,8 @@ w_class = WEIGHT_CLASS_SMALL slot_flags = ITEM_SLOT_BELT var/mob/living/silicon/pai/pai - resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE + resistance_flags = FIRE_PROOF | ACID_PROOF + max_integrity = 200 /obj/item/paicard/suicide_act(mob/living/user) user.visible_message("[user] is staring sadly at [src]! [user.p_they()] can't keep living without real human intimacy!") @@ -45,6 +46,8 @@ dat += "Radio Uplink
" dat += "Transmit: [(pai.radio.wires.is_cut(WIRE_TX)) ? "Disabled" : "Enabled"]
" dat += "Receive: [(pai.radio.wires.is_cut(WIRE_RX)) ? "Disabled" : "Enabled"]
" + if(pai.radio_short) + dat += "Reset radio short: \[RESET\]
" else dat += "Radio Uplink
" dat += "Radio firmware not loaded. Please install a pAI personality to load firmware.
" @@ -96,6 +99,8 @@ var/wire = text2num(href_list["wires"]) if(pai.radio) pai.radio.wires.cut(wire) + if(href_list["reset_radio_short"]) + pai.unshort_radio() if(href_list["setlaws"]) var/newlaws = copytext(sanitize(input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.laws.supplied[1]) as message),1,MAX_MESSAGE_LEN) if(newlaws && pai) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index a2fcc8e97e..2f10877f11 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -71,13 +71,14 @@ var/emitterhealth = 20 var/emittermaxhealth = 20 var/emitterregen = 0.25 + var/emitter_next_use = 0 var/emittercd = 50 var/emitteroverloadcd = 100 - var/emittersemicd = FALSE - var/overload_ventcrawl = 0 - var/overload_bulletblock = 0 //Why is this a good idea? - var/overload_maxhealth = 0 + var/radio_short = FALSE + var/radio_short_cooldown = 5 MINUTES + var/radio_short_timerid + canmove = FALSE var/silent = FALSE var/brightness_power = 5 @@ -239,7 +240,7 @@ /datum/action/innate/pai/shell/Trigger() ..() if(P.holoform) - P.fold_in(0) + P.fold_in(FALSE) else P.fold_out() @@ -304,6 +305,19 @@ /mob/living/silicon/pai/process() emitterhealth = CLAMP((emitterhealth + emitterregen), -50, emittermaxhealth) +/mob/living/silicon/pai/proc/short_radio() + if(radio_short_timerid) + deltimer(radio_short_timerid) + radio_short = TRUE + to_chat(src, "Your radio shorts out!") + radio_short_timerid = addtimer(CALLBACK(src, .proc/unshort_radio), radio_short_cooldown, flags = TIMER_STOPPABLE) + +/mob/living/silicon/pai/proc/unshort_radio() + radio_short = FALSE + to_chat(src, "You feel your radio is operational once more.") + if(radio_short_timerid) + deltimer(radio_short_timerid) + /mob/living/silicon/pai/proc/initialize_dynamic_chassis_icons() . = list() var/icon/curr //for inserts diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index e79295fca4..6e8c3911fc 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -12,12 +12,11 @@ . = fold_in(force) return - if(emittersemicd) + if(world_time < emitter_next_use) to_chat(src, "Error: Holochassis emitters recycling. Please try again later.") return FALSE - emittersemicd = TRUE - addtimer(CALLBACK(src, .proc/emittercool), emittercd) + emitter_next_use = world_time + emittercd canmove = TRUE density = TRUE if(istype(card.loc, /obj/item/pda)) @@ -46,20 +45,17 @@ visible_message("[src] folds out its holochassis emitter and forms a holoshell around itself!") holoform = TRUE -/mob/living/silicon/pai/proc/emittercool() - emittersemicd = FALSE - /mob/living/silicon/pai/proc/fold_in(force = FALSE) - emittersemicd = TRUE - if(!force) - addtimer(CALLBACK(src, .proc/emittercool), emittercd) - else - addtimer(CALLBACK(src, .proc/emittercool), emitteroverloadcd) + emitter_next_use = world_time + (force? emitteroverloadcd : emittercd) icon_state = "[chassis]" if(!holoform) . = fold_out(force) return - visible_message("[src] deactivates its holochassis emitter and folds back into a compact card!") + if(force) + short_radio() + visible_message("[src] shorts out, collapsing back into their storage card, sparks emitted from their radio antenna!") + else + visible_message("[src] deactivates its holochassis emitter and folds back into a compact card!") stop_pulling() if(client) client.perspective = EYE_PERSPECTIVE diff --git a/code/modules/mob/living/silicon/pai/say.dm b/code/modules/mob/living/silicon/pai/say.dm index 9f07900a25..31440f5473 100644 --- a/code/modules/mob/living/silicon/pai/say.dm +++ b/code/modules/mob/living/silicon/pai/say.dm @@ -5,4 +5,10 @@ ..(message) /mob/living/silicon/pai/binarycheck() - return 0 + return FALSE + +/mob/living/silicon/pai/radio() + if(radio_short) + to_chat(src, "Your radio is shorted out!") + return ITALICS | REDUCE_RANGE + return ..() diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 9882d028d1..b0555ec6de 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -283,7 +283,10 @@ dat += "Refresh
" // Built-in dat += "Directives
" - dat += "Radio Configuration
" + if(radio_shorted) + dat += "\[RADIO SHORTED - Recalibrating!\]" + else + dat += "Radio Configuration
" dat += "Screen Display
" //dat += "Text Messaging
" dat += "
"