This commit is contained in:
Zuhayr
2013-08-14 01:01:18 -07:00
32 changed files with 182 additions and 91 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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.")

View File

@@ -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
..()

View File

@@ -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!"

View File

@@ -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

View File

@@ -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!")

View File

@@ -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

View File

@@ -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)

View File

@@ -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)"