mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-01-03 22:13:24 +00:00
Merge branch 'master' of https://github.com/Baystation12/Baystation12
This commit is contained in:
@@ -1030,6 +1030,7 @@
|
||||
if (!O.amputated)
|
||||
O.status &= ~ORGAN_DESTROYED
|
||||
O.wounds.Cut()
|
||||
O.heal_damage(1000,1000,1,1)
|
||||
|
||||
var/datum/organ/external/head/h = organs_by_name["head"]
|
||||
h.disfigured = 0
|
||||
@@ -1049,6 +1050,10 @@
|
||||
|
||||
for (var/datum/disease/virus in viruses)
|
||||
virus.cure()
|
||||
for (var/ID in virus2)
|
||||
var/datum/disease2/disease/V = virus2[ID]
|
||||
V.cure(src)
|
||||
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/proc/is_lung_ruptured()
|
||||
@@ -1116,9 +1121,9 @@ mob/living/carbon/human/yank_out_object()
|
||||
set desc = "Remove an embedded item at the cost of bleeding and pain."
|
||||
set src in view(1)
|
||||
|
||||
if(!isliving(usr) || usr.last_click + usr.click_delay > world.time)
|
||||
if(!isliving(usr) || usr.next_move > world.time)
|
||||
return
|
||||
usr.delay_click(20)
|
||||
usr.next_move = world.time + 20
|
||||
|
||||
if(usr.stat == 1)
|
||||
usr << "You are unconcious and cannot do that!"
|
||||
@@ -1353,4 +1358,4 @@ mob/living/carbon/human/yank_out_object()
|
||||
|
||||
else
|
||||
src << "You do not have enough chemicals stored to reproduce."
|
||||
return
|
||||
return
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
|
||||
..()
|
||||
|
||||
M.delay_click(10)
|
||||
|
||||
if((M != src) && check_shields(0, M.name))
|
||||
visible_message("\red <B>[M] attempted to touch [src]!</B>")
|
||||
return 0
|
||||
|
||||
@@ -269,15 +269,6 @@
|
||||
if(iscarbon(src))
|
||||
var/mob/living/carbon/C = src
|
||||
C.handcuffed = initial(C.handcuffed)
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
for(var/datum/organ/external/O in H.organs)
|
||||
O.heal_damage(1000,1000,1,1)
|
||||
for(var/datum/organ/internal/I in H.internal_organs)
|
||||
I.damage = 0
|
||||
for (var/ID in H.virus2)
|
||||
var/datum/disease2/disease/V = H.virus2[ID]
|
||||
V.cure(src)
|
||||
for(var/datum/disease/D in viruses)
|
||||
D.cure(0)
|
||||
if(stat == 2)
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
attacktext = "nips"
|
||||
friendly = "prods"
|
||||
wander = 0
|
||||
pass_flags = PASSTABLE
|
||||
|
||||
var/chemicals = 10 // Chemicals used for reproduction and spitting neurotoxin.
|
||||
var/mob/living/carbon/human/host // Human host for the brain worm.
|
||||
@@ -109,6 +110,21 @@
|
||||
src << "You drop words into [host]'s mind: \"[message]\""
|
||||
host << "Your own thoughts speak: \"[message]\""
|
||||
|
||||
/mob/living/simple_animal/borer/Stat()
|
||||
..()
|
||||
statpanel("Status")
|
||||
|
||||
if(emergency_shuttle)
|
||||
if(emergency_shuttle.online && emergency_shuttle.location < 2)
|
||||
var/timeleft = emergency_shuttle.timeleft()
|
||||
if (timeleft)
|
||||
stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
|
||||
|
||||
if (client.statpanel == "Status")
|
||||
stat("Chemicals", chemicals)
|
||||
|
||||
// VERBS!
|
||||
|
||||
/mob/living/simple_animal/borer/proc/borer_speak(var/message)
|
||||
if(!message)
|
||||
return
|
||||
@@ -148,7 +164,31 @@
|
||||
host.verbs += /mob/living/carbon/human/proc/punish_host
|
||||
host.verbs += /mob/living/carbon/human/proc/spawn_larvae
|
||||
|
||||
mob/living/simple_animal/borer/verb/release_host()
|
||||
/mob/living/simple_animal/borer/verb/secrete_chemicals()
|
||||
set category = "Alien"
|
||||
set name = "Secrete Chemicals"
|
||||
set desc = "Push some chemicals into your host's bloodstream."
|
||||
|
||||
if(!host)
|
||||
src << "You are not inside a host body."
|
||||
return
|
||||
|
||||
if(stat)
|
||||
src << "You cannot secrete chemicals in your current state."
|
||||
|
||||
if(chemicals < 50)
|
||||
src << "You don't have enough chemicals!"
|
||||
|
||||
var/chem = input("Select a chemical to secrete.", "Chemicals") in list("bicaridine","tramadol","hyperzine")
|
||||
|
||||
if(chemicals < 50 || !host || controlling || !src || stat) //Sanity check.
|
||||
return
|
||||
|
||||
src << "\red <B>You squirt a measure of [chem] from your reservoirs into [host]'s bloodstream.</B>"
|
||||
host.reagents.add_reagent(chem, 15)
|
||||
chemicals -= 50
|
||||
|
||||
/mob/living/simple_animal/borer/verb/release_host()
|
||||
set category = "Alien"
|
||||
set name = "Release Host"
|
||||
set desc = "Slither out of your host."
|
||||
@@ -269,4 +309,62 @@ mob/living/simple_animal/borer/proc/detatch()
|
||||
return
|
||||
else
|
||||
src << "They are no longer in range!"
|
||||
return
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/borer/verb/ventcrawl()
|
||||
set name = "Crawl through Vent"
|
||||
set desc = "Enter an air vent and crawl through the pipe system."
|
||||
set category = "Alien"
|
||||
|
||||
// if(!istype(V,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent))
|
||||
// return
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/vent_found
|
||||
var/welded = 0
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src))
|
||||
if(!v.welded)
|
||||
vent_found = v
|
||||
break
|
||||
else
|
||||
welded = 1
|
||||
if(vent_found)
|
||||
if(vent_found.network&&vent_found.network.normal_members.len)
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in vent_found.network.normal_members)
|
||||
if(temp_vent.loc == loc)
|
||||
continue
|
||||
vents.Add(temp_vent)
|
||||
var/list/choices = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/vent in vents)
|
||||
if(vent.loc.z != loc.z)
|
||||
continue
|
||||
var/atom/a = get_turf(vent)
|
||||
choices.Add(a.loc)
|
||||
var/turf/startloc = loc
|
||||
var/obj/selection = input("Select a destination.", "Duct System") in choices
|
||||
var/selection_position = choices.Find(selection)
|
||||
if(loc==startloc)
|
||||
var/obj/target_vent = vents[selection_position]
|
||||
if(target_vent)
|
||||
loc = target_vent.loc
|
||||
else
|
||||
src << "\blue You need to remain still while entering a vent."
|
||||
else
|
||||
src << "\blue This vent is not connected to anything."
|
||||
else if(welded)
|
||||
src << "\red That vent is welded."
|
||||
else
|
||||
src << "\blue You must be standing on or beside an air vent to enter it."
|
||||
return
|
||||
|
||||
//copy paste from alien/larva, if that func is updated please update this one alsoghost
|
||||
/mob/living/simple_animal/borer/verb/hide()
|
||||
set name = "Hide"
|
||||
set desc = "Allows to hide beneath tables or certain items. Toggled on or off."
|
||||
set category = "Alien"
|
||||
|
||||
if (layer != TURF_LAYER+0.2)
|
||||
layer = TURF_LAYER+0.2
|
||||
src << text("\blue You are now hiding.")
|
||||
else
|
||||
layer = MOB_LAYER
|
||||
src << text("\blue You have stopped hiding.")
|
||||
@@ -33,7 +33,7 @@
|
||||
if(hud_used) del(hud_used) //remove the hud objects
|
||||
hud_used = new /datum/hud(src)
|
||||
|
||||
last_click = world.time
|
||||
next_move = 1
|
||||
sight |= SEE_SELF
|
||||
..()
|
||||
|
||||
|
||||
@@ -905,9 +905,9 @@ mob/verb/yank_out_object()
|
||||
set desc = "Remove an embedded item at the cost of bleeding and pain."
|
||||
set src in view(1)
|
||||
|
||||
if(!isliving(usr) || usr.last_click + usr.click_delay > world.time)
|
||||
if(!isliving(usr) || usr.next_move > world.time)
|
||||
return
|
||||
usr.delay_click(20)
|
||||
usr.next_move = world.time + 20
|
||||
|
||||
if(usr.stat == 1)
|
||||
usr << "You are unconcious and cannot do that!"
|
||||
|
||||
@@ -54,8 +54,8 @@
|
||||
var/sdisabilities = 0 //Carbon
|
||||
var/disabilities = 0 //Carbon
|
||||
var/atom/movable/pulling = null
|
||||
var/last_click = null
|
||||
var/click_delay = 0
|
||||
var/next_move = null
|
||||
var/prev_move = null
|
||||
var/monkeyizing = null //Carbon
|
||||
var/other = 0.0
|
||||
var/hand = null
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
return
|
||||
if(killing)
|
||||
return
|
||||
if (assailant.last_click + assailant.click_delay > world.time)
|
||||
if (assailant.next_move > world.time)
|
||||
return
|
||||
if ((!( assailant.canmove ) || assailant.lying))
|
||||
//SN src = null
|
||||
@@ -140,7 +140,7 @@
|
||||
if (!( killing ))
|
||||
assailant.visible_message("\red [assailant] has temporarily tightened \his grip on [affecting]!")
|
||||
//Foreach goto(97)
|
||||
assailant.delay_click(10)
|
||||
assailant.next_move = world.time + 10
|
||||
//affecting.stunned = max(2, affecting.stunned)
|
||||
//affecting.paralysis = max(1, affecting.paralysis)
|
||||
affecting.losebreath = min(affecting.losebreath + 1, 3)
|
||||
@@ -162,8 +162,6 @@
|
||||
if(killing)
|
||||
return
|
||||
|
||||
assailant.delay_click(10)
|
||||
|
||||
switch(S.id)
|
||||
if(1.0)
|
||||
if (state < 2)
|
||||
@@ -237,7 +235,7 @@
|
||||
assailant.attack_log += text("\[[time_stamp()]\] <font color='red'>Strangled (kill intent) [affecting.name] ([affecting.ckey])</font>")
|
||||
log_attack("<font color='red'>[assailant.name] ([assailant.ckey]) Strangled (kill intent) [affecting.name] ([affecting.ckey])</font>")
|
||||
|
||||
assailant.delay_click(10)
|
||||
assailant.next_move = world.time + 10
|
||||
affecting.losebreath += 1
|
||||
else
|
||||
assailant.visible_message("\red [assailant] was unable to tighten \his grip on [affecting]'s neck!")
|
||||
|
||||
@@ -454,7 +454,3 @@ var/list/intents = list("help","disarm","grab","hurt")
|
||||
hud_used.action_intent.icon_state = "harm"
|
||||
else
|
||||
hud_used.action_intent.icon_state = "help"
|
||||
|
||||
/mob/proc/delay_click(var/delay)
|
||||
src.click_delay = max(src.click_delay, delay)
|
||||
return src.click_delay
|
||||
|
||||
@@ -351,7 +351,7 @@
|
||||
if(client.prefs.species)
|
||||
chosen_species = all_species[client.prefs.species]
|
||||
if(chosen_species)
|
||||
if(is_alien_whitelisted(src, client.prefs.species) || !config.usealienwhitelist || !(chosen_species.flags & WHITELISTED))
|
||||
if(is_alien_whitelisted(src, client.prefs.species) || (client.prefs.species == "Unathi" && is_alien_whitelisted(src, "Soghun")) || !config.usealienwhitelist || !(chosen_species.flags & WHITELISTED))
|
||||
new_character.set_species(client.prefs.species)
|
||||
if(chosen_species.language)
|
||||
new_character.add_language(chosen_species.language)
|
||||
|
||||
@@ -600,9 +600,9 @@
|
||||
set name = "Resist"
|
||||
set category = "IC"
|
||||
|
||||
if(!isliving(usr) || usr.last_click + usr.click_delay > world.time)
|
||||
if(!isliving(usr) || usr.next_move > world.time)
|
||||
return
|
||||
usr.delay_click(20)
|
||||
usr.next_move = world.time + 20
|
||||
|
||||
var/mob/living/L = usr
|
||||
|
||||
@@ -670,7 +670,7 @@
|
||||
if(iscarbon(L))
|
||||
var/mob/living/carbon/C = L
|
||||
if( C.handcuffed )
|
||||
C.delay_click(100)
|
||||
C.next_move = world.time + 100
|
||||
C.last_special = world.time + 100
|
||||
C << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)"
|
||||
for(var/mob/O in viewers(L))
|
||||
@@ -704,7 +704,7 @@
|
||||
// breakout_time++ //Harder to get out of welded lockers than locked lockers
|
||||
|
||||
//okay, so the closet is either welded or locked... resist!!!
|
||||
usr.delay_click(100)
|
||||
usr.next_move = world.time + 100
|
||||
L.last_special = world.time + 100
|
||||
L << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about [breakout_time] minutes)"
|
||||
for(var/mob/O in viewers(usr.loc))
|
||||
@@ -757,7 +757,7 @@
|
||||
else if(iscarbon(L))
|
||||
var/mob/living/carbon/CM = L
|
||||
if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time))
|
||||
CM.delay_click(100)
|
||||
CM.next_move = world.time + 100
|
||||
CM.last_special = world.time + 100
|
||||
if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here.
|
||||
usr << "\red You attempt to break your handcuffs. (This will take around 5 seconds and you need to stand still)"
|
||||
@@ -795,7 +795,7 @@
|
||||
CM.handcuffed = null
|
||||
CM.update_inv_handcuffed()
|
||||
else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time))
|
||||
CM.delay_click(100)
|
||||
CM.next_move = world.time + 100
|
||||
CM.last_special = world.time + 100
|
||||
if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here.
|
||||
usr << "\red You attempt to break your legcuffs. (This will take around 5 seconds and you need to stand still)"
|
||||
|
||||
Reference in New Issue
Block a user