From 6b73b8ec2f4438d8487e9d4951e32674e4435328 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 13 Jun 2013 20:46:09 -0700 Subject: [PATCH 01/13] Adjusted kitchen knives. Added projectile pinning. Various tweaks. --- code/game/objects/items/weapons/kitchen.dm | 1 + code/game/objects/items/weapons/weaponry.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 7 +++- code/modules/mob/living/living_defense.dm | 34 ++++++++++++++++- code/modules/mob/living/living_defines.dm | 1 - code/modules/mob/mob.dm | 37 +++++++++++-------- code/modules/mob/mob_defines.dm | 1 + code/modules/mob/mob_movement.dm | 5 ++- .../projectiles/guns/projectile/bow.dm | 9 ++++- .../projectiles/guns/projectile/pneumatic.dm | 2 +- 10 files changed, 76 insertions(+), 23 deletions(-) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index a68276a3100..6fbdba918ed 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -153,6 +153,7 @@ icon_state = "knife" desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." flags = FPRINT | TABLEPASS | CONDUCT + sharp = 1 force = 10.0 w_class = 3.0 throwforce = 6.0 diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 08af5cda280..92e6b78d754 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -146,5 +146,5 @@ item_state = "harpoon" force = 20 throwforce = 15 - w_class = 2 + w_class = 3 attack_verb = list("jabbed","stabbed","ripped") \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 63d685bfbdd..fc93d905b63 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -45,7 +45,7 @@ if(istype(tmob, /mob/living/carbon/human)) for(var/mob/M in range(tmob, 1)) - if( ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) ) + if(tmob.pinned.len || ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) ) if ( !(world.time % 5) ) src << "\red [tmob] is restrained, you cannot push past" now_pushing = 0 @@ -1153,6 +1153,11 @@ affected.implants -= selection shock_stage+=10 + for(var/obj/item/weapon/O in pinned) + if(O == selection) + pinned -= O + src.anchored = 0 + if(prob(10)) //I'M SO ANEMIC I COULD JUST -DIE-. var/datum/wound/internal_bleeding/I = new (15) affected.wounds += I diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index a3bc884c171..f7b2caecae3 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -61,7 +61,7 @@ P.on_hit(src, absorb) return absorb -/mob/living/hitby(atom/movable/AM as mob|obj,var/speed)//Standardization and logging -Sieve +/mob/living/hitby(atom/movable/AM as mob|obj,var/speed = 5)//Standardization and logging -Sieve if(istype(AM,/obj/)) var/obj/O = AM var/zone = ran_zone("chest",75)//Hits a random part of the body, geared towards the chest @@ -73,11 +73,43 @@ var/armor = run_armor_check(zone, "melee", "Your armor has protected your [zone].", "Your armor has softened hit to your [zone].") if(armor < 2) apply_damage(O.throwforce*(speed/5), dtype, zone, armor, O.sharp, O) + if(!O.fingerprintslast) return + var/client/assailant = directory[ckey(O.fingerprintslast)] if(assailant && assailant.mob && istype(assailant.mob,/mob)) var/mob/M = assailant.mob src.attack_log += text("\[[time_stamp()]\] Has been hit with [O], last touched by [M.name] ([assailant.ckey])") M.attack_log += text("\[[time_stamp()]\] Hit [src.name] ([src.ckey]) with [O]") log_attack("[src.name] ([src.ckey]) was hit by [O], last touched by [M.name] ([assailant.ckey])") + + // Begin BS12 momentum-transfer code. + + if(speed > 20) + var/obj/item/weapon/W = O + var/momentum = speed/2 + var/dir = get_dir(M,src) + visible_message("\red [src] staggers under the impact!","\red You stagger under the impact!") + + src.throw_at(get_edge_target_turf(src,dir),1,momentum) + + if(near_wall(dir,2) && W.w_class >= 3 && W.sharp) //If they're close to a wall and the projectile is suitable. + visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!") + src.anchored = 1 + src.pinned += O + + +/mob/living/proc/near_wall(var/direction,var/distance=1) + var/turf/T = get_step(get_turf(src),direction) + var/i = 1 + while(i>0 && i<=distance) + if(T.density) //Turf is a wall! + return 1 + i++ + T = get_step(T,direction) + + return 0 + + +// End BS12 momentum-transfer code. \ No newline at end of file diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 19d94b42f5a..8d76b47513c 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -24,7 +24,6 @@ //Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects. var/incorporeal_move = 0 //0 is off, 1 is normal, 2 is for ninjas. - var/t_plasma = null var/t_oxygen = null var/t_sl_gas = null diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 253e4ee43dc..6e9beda1bad 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -583,24 +583,31 @@ var/list/slot_equipment_priority = list( \ pulling = null /mob/proc/start_pulling(var/atom/movable/AM) + if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! return - if (!( AM.anchored )) - if(pulling) - var/pulling_old = pulling - stop_pulling() - // Are we pulling the same thing twice? Just stop pulling. - if(pulling_old == AM) - return - src.pulling = AM - AM.pulledby = src - if(ismob(AM)) - var/mob/M = AM - if(!iscarbon(src)) - M.LAssailant = null - else - M.LAssailant = usr + if (AM.anchored) + return + + var/mob/M = AM + if(ismob(AM)) + if(!iscarbon(src)) + M.LAssailant = null + else + M.LAssailant = usr + if (M.pinned.len) + usr << "They're pinned, gtfo." + return + + if(pulling) + var/pulling_old = pulling + stop_pulling() + // Are we pulling the same thing twice? Just stop pulling. + if(pulling_old == AM) + return + src.pulling = AM + AM.pulledby = src /mob/proc/can_use_hands() return diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 9715e6ed20c..140e5b63572 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -85,6 +85,7 @@ var/lastpuke = 0 var/unacidable = 0 var/small = 0 + var/list/pinned = list() //List of things pinning this creature to walls (see living_defense.dm) var/name_archive //For admin things like possession diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index cec9b06861a..80d55c0a041 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -256,7 +256,6 @@ if(!mob.canmove) return - //if(istype(mob.loc, /turf/space) || (mob.flags & NOGRAV)) // if(!mob.Process_Spacemove(0)) return 0 @@ -279,6 +278,10 @@ src << "\blue You're restrained! You can't move!" return 0 + if(mob.pinned.len) + src << "\blue You're pinned to a wall by [mob.pinned[1]]!" + return 0 + move_delay = world.time//set move delay mob.last_move_intent = world.time + 10 switch(mob.m_intent) diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm index a052f198422..25f4276d9a0 100644 --- a/code/modules/projectiles/guns/projectile/bow.dm +++ b/code/modules/projectiles/guns/projectile/bow.dm @@ -7,7 +7,7 @@ item_state = "bolt" flags = FPRINT | TABLEPASS throwforce = 12 - w_class = 2.0 + w_class = 3.0 sharp = 1 /obj/item/weapon/arrow/proc/removed() //Helper for metal rods falling apart.. @@ -33,7 +33,7 @@ icon = 'icons/obj/weapons.dmi' icon_state = "crossbow" item_state = "crossbow-solid" - w_class = 4.0 + w_class = 5.0 flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY slot_flags = SLOT_BELT | SLOT_BACK @@ -59,6 +59,7 @@ var/obj/item/stack/rods/R = W R.use(1) arrow = new /obj/item/weapon/arrow/rod(src) + arrow.fingerprintslast = src.fingerprintslast arrow.loc = src user.visible_message("[user] haphazardly jams [arrow] into [src].","You jam [arrow] into [src].") if(cell) @@ -156,6 +157,10 @@ else if(target == user) return + if(!tension) + user << "You haven't drawn back the bolt!" + return 0 + if (!arrow) user << "You have no arrow nocked to [src]!" return 0 diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm index 7d2f0c3b498..fe6c2651bd5 100644 --- a/code/modules/projectiles/guns/projectile/pneumatic.dm +++ b/code/modules/projectiles/guns/projectile/pneumatic.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/gun.dmi' icon_state = "pneumatic" item_state = "pneumatic" - w_class = 4.0 + w_class = 5.0 flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY slot_flags = SLOT_BELT max_w_class = 3 From 3cb36272cbe922403c081b2b442f7a4af47ed254 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 13 Jun 2013 22:18:26 -0700 Subject: [PATCH 02/13] Adjusted yank verb to apply to others as well as yourself. --- code/modules/mob/living/carbon/human/human.dm | 109 ++++++++++++------ .../projectiles/guns/projectile/bow.dm | 1 + 2 files changed, 76 insertions(+), 34 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index fc93d905b63..d0dd7f8e388 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1113,56 +1113,97 @@ del(feet_blood_DNA) return 1 -/mob/living/carbon/human/verb/yank_out_object() - set name = "Yank out object" +mob/living/carbon/human/verb/yank_out_object_test() + set category = "IC" + set name = "Yank out object (test)" set desc = "Remove an embedded item at the cost of bleeding and pain." - set category = "Object" + set src in view(1) if(!isliving(usr) || usr.next_move > world.time) return usr.next_move = world.time + 20 - var/list/valid_objects = get_visible_implants(1) + if(usr.stat == 1) + usr << "You are unconcious and cannot do that!" + return + + if(usr.restrained()) + usr << "You are restrained and cannot do that!" + return + +// /* + var/list/valid_objects = list() var/datum/organ/external/affected = null + var/mob/living/carbon/human/S = src + var/mob/living/carbon/human/U = usr - if(!valid_objects.len) - src << "You have nothing stuck in your wounds that is large enough to remove without surgery." - return + if(S == U) // Removing something from yourself. + valid_objects = get_visible_implants(1) - if(src.stat == 1) - src << "You are unconcious and cannot do that!" - return + if(!valid_objects.len) + src << "You have nothing stuck in your wounds that is large enough to remove without surgery." + return - if(src.restrained()) - src << "You are restrained and cannot do that!" - return + var/obj/item/weapon/selection = input("What do you want to yank out?", "Embedded objects") in valid_objects - var/obj/item/weapon/selection = input("What do you want to yank out?", "Embedded objects") in valid_objects + for(var/datum/organ/external/organ in organs) //Grab the organ holding the implant. Messy as Hell, TBD: fix. + for(var/obj/item/weapon/O in organ.implants) + if(O == selection) + affected = organ - for(var/datum/organ/external/organ in src.organs) //Grab the organ holding the implant. Messy as Hell, TBD: fix. - for(var/obj/item/weapon/O in organ.implants) - if(O == selection) - affected = organ + src << "You attempt to get a good grip on the [selection] in your [affected] with bloody fingers." + bloody_hands(S) - src << "You attempt to get a good grip on the [selection] in your [affected] with bloody fingers." - bloody_hands(src) + spawn(80) + visible_message("[src] rips [selection] out of their [affected] in a welter of blood.","You rip [selection] out of your [affected] in a welter of blood.") + selection.loc = get_turf(src) + affected.implants -= selection + shock_stage+=10 - spawn(80) - visible_message("[src] rips [selection] out of their [affected] in a welter of blood.","You rip [selection] out of your [affected] in a welter of blood.") - selection.loc = get_turf(src) - affected.implants -= selection - shock_stage+=10 + for(var/obj/item/weapon/O in pinned) + if(O == selection) + pinned -= O + anchored = 0 - for(var/obj/item/weapon/O in pinned) - if(O == selection) - pinned -= O - src.anchored = 0 + if(prob(10)) //I'M SO ANEMIC I COULD JUST -DIE-. + var/datum/wound/internal_bleeding/I = new (15) + affected.wounds += I + custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 1) + return 1 - if(prob(10)) //I'M SO ANEMIC I COULD JUST -DIE-. - var/datum/wound/internal_bleeding/I = new (15) - affected.wounds += I - src.custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 1) - return 1 + else // Removing something from someone else. + valid_objects = src.get_visible_implants(1) + + if(!valid_objects.len) + U << "[src] has nothing stuck in their wounds that is large enough to remove without surgery." + return + + var/obj/item/weapon/selection = input("What do you want to yank out?", "Embedded objects") in valid_objects + + for(var/datum/organ/external/organ in src.organs) //Grab the organ holding the implant. Messy as Hell, TBD: fix. + for(var/obj/item/weapon/O in organ.implants) + if(O == selection) + affected = organ + + U << "You attempt to get a good grip on the [selection] in [S]'s [affected] with bloody fingers." + U.bloody_hands(S) + + spawn(80) + visible_message("[usr] rips [selection] out of [src]'s [affected] in a welter of blood.","[src] rips [selection] out of your [affected] in a welter of blood.") + selection.loc = get_turf(usr) + affected.implants -= selection + src.shock_stage+=10 + + for(var/obj/item/weapon/O in S.pinned) + if(O == selection) + S.pinned -= O + S.anchored = 0 + + if(prob(10)) //I'M SO ANEMIC I COULD JUST -DIE-. + var/datum/wound/internal_bleeding/I = new (15) + affected.wounds += I + custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 1) + return 1 /mob/living/carbon/human/proc/get_visible_implants(var/class = 0) diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm index 25f4276d9a0..4c5c0c0b1c2 100644 --- a/code/modules/projectiles/guns/projectile/bow.dm +++ b/code/modules/projectiles/guns/projectile/bow.dm @@ -61,6 +61,7 @@ arrow = new /obj/item/weapon/arrow/rod(src) arrow.fingerprintslast = src.fingerprintslast arrow.loc = src + icon_state = "crossbow-nocked" user.visible_message("[user] haphazardly jams [arrow] into [src].","You jam [arrow] into [src].") if(cell) if(cell.charge >= 500) From b30b1569506e2b42ce696c35fda857518bad80be Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 13 Jun 2013 22:59:13 -0700 Subject: [PATCH 03/13] Melee embedding fix. --- code/modules/mob/living/carbon/human/human_damage.dm | 8 ++++++-- 1 file changed, 6 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 1cf951c53b8..5d4e1da9b69 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -226,12 +226,16 @@ //Embedded projectile code. if(!organ) return if(istype(used_weapon,/obj/item/weapon)) - var/obj/item/weapon/W = used_weapon + var/obj/item/weapon/W = used_weapon //Sharp objects will always embed if they do enough damage. if(damage > (5*W.w_class) && (prob(damage/W.w_class) || sharp)) //The larger it is, the harder it needs to hit to stick. - W.loc = src //Sharp objects will always embed if they do enough damage. organ.implants += W visible_message("\The [W] sticks in the wound!") W.add_blood(src) + if(ismob(W.loc)) + var/mob/living/H = W.loc + H.drop_item() + W.loc = src + else if(istype(used_weapon,/obj/item/projectile)) //We don't want to use the actual projectile item, so we spawn some shrapnel. if(prob(50) && damagetype == BRUTE) var/obj/item/weapon/shard/shrapnel/S = new() From 084b1414c3efef47f723b277b63820c29a9f1f06 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 14 Jun 2013 12:42:25 -0700 Subject: [PATCH 04/13] Bloody footprint resprites. --- icons/effects/footprints.dmi | Bin 2391 -> 12508 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/effects/footprints.dmi b/icons/effects/footprints.dmi index ede9c8e17d65338ff60e108aeefb62c6e011c179..b849de00fff38637dc85b5fdd75c71bb722164b0 100644 GIT binary patch literal 12508 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 JPDHLkV1jStReS&d From 7a19d6165bc96d98a42ba58ea532da78b171fe2b Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 14 Jun 2013 13:03:03 -0700 Subject: [PATCH 05/13] Projectile shrapnel tweak for ease of forensics identification. --- code/modules/mob/living/carbon/human/human_damage.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 5d4e1da9b69..78038f5c84a 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -238,7 +238,10 @@ else if(istype(used_weapon,/obj/item/projectile)) //We don't want to use the actual projectile item, so we spawn some shrapnel. if(prob(50) && damagetype == BRUTE) + var/obj/item/projectile/P = used_weapon var/obj/item/weapon/shard/shrapnel/S = new() + S.name = "[P.name] shrapnel" + S.desc = "[S.desc] It looks like it was fired from [P.shot_from]." S.loc = src organ.implants += S visible_message("The projectile sticks in the wound!") From 73d35bcd4f0e7d9bdc7851f2ffc6f57b93095391 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 14 Jun 2013 13:17:21 -0700 Subject: [PATCH 06/13] Minor changes/sanity checks in yank-out verb. --- code/modules/mob/living/carbon/human/human.dm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d0dd7f8e388..ff3b6508ce6 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1113,9 +1113,9 @@ del(feet_blood_DNA) return 1 -mob/living/carbon/human/verb/yank_out_object_test() +mob/living/carbon/human/verb/yank_out_object() set category = "IC" - set name = "Yank out object (test)" + set name = "Yank out object" set desc = "Remove an embedded item at the cost of bleeding and pain." set src in view(1) @@ -1154,7 +1154,10 @@ mob/living/carbon/human/verb/yank_out_object_test() src << "You attempt to get a good grip on the [selection] in your [affected] with bloody fingers." bloody_hands(S) - spawn(80) + do_after(80) + if(!selection || !affected || !S || !U) + return + visible_message("[src] rips [selection] out of their [affected] in a welter of blood.","You rip [selection] out of your [affected] in a welter of blood.") selection.loc = get_turf(src) affected.implants -= selection @@ -1188,7 +1191,10 @@ mob/living/carbon/human/verb/yank_out_object_test() U << "You attempt to get a good grip on the [selection] in [S]'s [affected] with bloody fingers." U.bloody_hands(S) - spawn(80) + do_after(80) + if(!selection || !affected || !S || !U) + return + visible_message("[usr] rips [selection] out of [src]'s [affected] in a welter of blood.","[src] rips [selection] out of your [affected] in a welter of blood.") selection.loc = get_turf(usr) affected.implants -= selection From 030290d3a753c6719593702892929ee5d56af475 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 14 Jun 2013 13:25:20 -0700 Subject: [PATCH 07/13] Learn to test compile when using new procs, idiot. --- code/modules/mob/living/carbon/human/human.dm | 64 ++++++++++--------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index ff3b6508ce6..551783798ae 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1154,24 +1154,26 @@ mob/living/carbon/human/verb/yank_out_object() src << "You attempt to get a good grip on the [selection] in your [affected] with bloody fingers." bloody_hands(S) - do_after(80) - if(!selection || !affected || !S || !U) - return + if(!do_after(80)) + return - visible_message("[src] rips [selection] out of their [affected] in a welter of blood.","You rip [selection] out of your [affected] in a welter of blood.") - selection.loc = get_turf(src) - affected.implants -= selection - shock_stage+=10 + if(!selection || !affected || !S || !U) + return - for(var/obj/item/weapon/O in pinned) - if(O == selection) - pinned -= O - anchored = 0 + visible_message("[src] rips [selection] out of their [affected] in a welter of blood.","You rip [selection] out of your [affected] in a welter of blood.") + selection.loc = get_turf(src) + affected.implants -= selection + shock_stage+=10 - if(prob(10)) //I'M SO ANEMIC I COULD JUST -DIE-. - var/datum/wound/internal_bleeding/I = new (15) - affected.wounds += I - custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 1) + for(var/obj/item/weapon/O in pinned) + if(O == selection) + pinned -= O + anchored = 0 + + if(prob(10)) //I'M SO ANEMIC I COULD JUST -DIE-. + var/datum/wound/internal_bleeding/I = new (15) + affected.wounds += I + custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 1) return 1 else // Removing something from someone else. @@ -1191,24 +1193,26 @@ mob/living/carbon/human/verb/yank_out_object() U << "You attempt to get a good grip on the [selection] in [S]'s [affected] with bloody fingers." U.bloody_hands(S) - do_after(80) - if(!selection || !affected || !S || !U) - return + if(!do_after(80)) + return - visible_message("[usr] rips [selection] out of [src]'s [affected] in a welter of blood.","[src] rips [selection] out of your [affected] in a welter of blood.") - selection.loc = get_turf(usr) - affected.implants -= selection - src.shock_stage+=10 + if(!selection || !affected || !S || !U) + return - for(var/obj/item/weapon/O in S.pinned) - if(O == selection) - S.pinned -= O - S.anchored = 0 + visible_message("[usr] rips [selection] out of [src]'s [affected] in a welter of blood.","[src] rips [selection] out of your [affected] in a welter of blood.") + selection.loc = get_turf(usr) + affected.implants -= selection + src.shock_stage+=10 - if(prob(10)) //I'M SO ANEMIC I COULD JUST -DIE-. - var/datum/wound/internal_bleeding/I = new (15) - affected.wounds += I - custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 1) + for(var/obj/item/weapon/O in S.pinned) + if(O == selection) + S.pinned -= O + S.anchored = 0 + + if(prob(10)) //I'M SO ANEMIC I COULD JUST -DIE-. + var/datum/wound/internal_bleeding/I = new (15) + affected.wounds += I + custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 1) return 1 /mob/living/carbon/human/proc/get_visible_implants(var/class = 0) From 52433df15486235f7d3f1ba5fd090236b2c68ba6 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 14 Jun 2013 13:41:06 -0700 Subject: [PATCH 08/13] Runtime fix (argh) and removal of vox from the station race whitelist. --- code/modules/client/preferences.dm | 6 +----- code/modules/mob/living/carbon/human/human.dm | 4 ++-- code/modules/mob/new_player/new_player.dm | 4 ---- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8d5376c3131..754e65924d7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -792,10 +792,6 @@ datum/preferences if(is_alien_whitelisted(user, "Skrell")) //Check for Skrell and admins new_species += "Skrell" whitelisted = 1 - if(is_alien_whitelisted(user, "Vox")) //Check for Skrell and admins - new_species += "Vox" - whitelisted = 1 - if(!whitelisted) alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.") @@ -803,7 +799,7 @@ datum/preferences new_species += "Tajaran" new_species += "Unathi" new_species += "Skrell" - new_species += "Vox" + species = input("Please select a species", "Character Generation", null) in new_species if(prev_species != species) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 551783798ae..b59c0d2bcd2 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1154,7 +1154,7 @@ mob/living/carbon/human/verb/yank_out_object() src << "You attempt to get a good grip on the [selection] in your [affected] with bloody fingers." bloody_hands(S) - if(!do_after(80)) + if(!do_after(U, 80)) return if(!selection || !affected || !S || !U) @@ -1193,7 +1193,7 @@ mob/living/carbon/human/verb/yank_out_object() U << "You attempt to get a good grip on the [selection] in [S]'s [affected] with bloody fingers." U.bloody_hands(S) - if(!do_after(80)) + if(!do_after(U, 80)) return if(!selection || !affected || !S || !U) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 686007c7173..5ba8a959b9c 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -349,10 +349,6 @@ if(is_alien_whitelisted(src, "Skrell"|| !config.usealienwhitelist)) new_character.dna.mutantrace = "skrell" new_character.skrell_talk_understand = 1 - if(client.prefs.species == "Vox") - if(is_alien_whitelisted(src, "Vox"|| !config.usealienwhitelist)) - new_character.dna.mutantrace = "vox" - new_character.vox_talk_understand = 1 if(ticker.random_players) new_character.gender = pick(MALE, FEMALE) From 1e1426fa8ae5839f1b43306650d4eb187c8ec01c Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 14 Jun 2013 16:36:55 -0700 Subject: [PATCH 09/13] Minor vox sprite fix, added vox to Create Admin verb. --- baystation12.dme | 1 + code/modules/admin/topic.dm | 20 +++-- code/modules/admin/verbs/one_click_antag.dm | 95 +++++++++++++++++++- code/modules/admin/verbs/vox_raiders.dm | 66 ++++++++++++++ icons/mob/human_races/r_def_vox.dmi | Bin 2013 -> 2036 bytes icons/mob/human_races/r_vox.dmi | Bin 2013 -> 2033 bytes 6 files changed, 172 insertions(+), 10 deletions(-) create mode 100644 code/modules/admin/verbs/vox_raiders.dm diff --git a/baystation12.dme b/baystation12.dme index 68d5ab3d3d0..78f58149999 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -710,6 +710,7 @@ #include "code\modules\admin\verbs\striketeam_syndicate.dm" #include "code\modules\admin\verbs\ticklag.dm" #include "code\modules\admin\verbs\tripAI.dm" +#include "code\modules\admin\verbs\vox_raiders.dm" #include "code\modules\assembly\assembly.dm" #include "code\modules\assembly\bomb.dm" #include "code\modules\assembly\helpers.dm" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 292327ca274..6303e8d0da0 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -11,31 +11,31 @@ if("1") log_admin("[key_name(usr)] has spawned a traitor.") if(!src.makeTraitors()) - usr << "\red Unfortunatly there were no candidates available" + usr << "\red Unfortunately there weren't enough candidates available." if("2") log_admin("[key_name(usr)] has spawned a changeling.") if(!src.makeChanglings()) - usr << "\red Unfortunatly there were no candidates available" + usr << "\red Unfortunately there weren't enough candidates available." if("3") log_admin("[key_name(usr)] has spawned revolutionaries.") if(!src.makeRevs()) - usr << "\red Unfortunatly there were no candidates available" + usr << "\red Unfortunately there weren't enough candidates available." if("4") log_admin("[key_name(usr)] has spawned a cultists.") if(!src.makeCult()) - usr << "\red Unfortunatly there were no candidates available" + usr << "\red Unfortunately there weren't enough candidates available." if("5") log_admin("[key_name(usr)] has spawned a malf AI.") if(!src.makeMalfAImode()) - usr << "\red Unfortunatly there were no candidates available" + usr << "\red Unfortunately there weren't enough candidates available." if("6") log_admin("[key_name(usr)] has spawned a wizard.") if(!src.makeWizard()) - usr << "\red Unfortunatly there were no candidates available" + usr << "\red Unfortunately there weren't enough candidates available." if("7") log_admin("[key_name(usr)] has spawned a nuke team.") if(!src.makeNukeTeam()) - usr << "\red Unfortunatly there were no candidates available" + usr << "\red Unfortunately there weren't enough candidates available." if("8") log_admin("[key_name(usr)] has spawned a ninja.") src.makeSpaceNinja() @@ -44,8 +44,10 @@ src.makeAliens() if("10") log_admin("[key_name(usr)] has spawned a death squad.") - if(!src.makeDeathsquad()) - usr << "\red Unfortunatly there were no candidates available" + if("11") + log_admin("[key_name(usr)] has spawned vox raiders.") + if(!src.makeVoxRaiders()) + usr << "\red Unfortunately there weren't enough candidates available." else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"]) var/adminckey = href_list["dbsearchadmin"] var/playerckey = href_list["dbsearchckey"] diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 8ef53eb0232..823d1adc2f0 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -17,6 +17,7 @@ client/proc/one_click_antag() Make Cult
Make Malf AI
Make Wizard (Requires Ghosts)
+ Make Vox Raiders (Requires Ghosts)
"} /* These dont work just yet Ninja, aliens and deathsquad I have not looked into yet @@ -429,4 +430,96 @@ client/proc/one_click_antag() ticker.mode.traitors += new_syndicate_commando.mind new_syndicate_commando.equip_syndicate_commando(syndicate_leader_selected) - return new_syndicate_commando \ No newline at end of file + return new_syndicate_commando + +/datum/admins/proc/makeVoxRaiders() + + var/list/mob/dead/observer/candidates = list() + var/mob/dead/observer/theghost = null + var/time_passed = world.time + var/input = "Disregard shinies, acquire hardware." + + var/leader_chosen = 0 //when the leader is chosen. The last person spawned. + + //Generates a list of candidates from active ghosts. The admin picks which players to respawn as the vox. + for(var/mob/dead/observer/G in player_list) + spawn(0) + if(is_alien_whitelisted(src, "Vox") || !config.usealienwhitelist) + switch(alert(G,"Do you wish to be considered for a vox raiding party arriving on the station?","Please answer in 30 seconds!","Yes","No")) + if("Yes") + if((world.time-time_passed)>300)//If more than 30 game seconds passed. + return + candidates += G + if("No") + return + else + return + + sleep(300) //Debug. + + for(var/mob/dead/observer/G in candidates) + if(!G.key) + candidates.Remove(G) + + if(candidates.len) + var/raiders = 1 + //Spawns vox raiders and equips them. Two raiders, two engineers. + for (var/obj/effect/landmark/L in world) + if(L.name == "Response Team") + if(raiders<=0) + break + + var/mob/living/carbon/human/new_vox = create_vox_raider(L, leader_chosen) + + while((!theghost || !theghost.client) && candidates.len) + theghost = pick(candidates) + candidates.Remove(theghost) + + if(!theghost) + del(new_vox) + break + + new_vox.key = theghost.key + new_vox << "\blue You are a Vox Primalis, fresh out of the Shoal. Your crew has arrived at the NSV Exodus to begin pillaging! Your current goal is: \red [input]" + new_vox << "\red Don't forget to turn on your nitrogen internals!" + + raiders-- + if(raiders >= 4) + return 0 + else + return 0 + return 1 + +/datum/admins/proc/create_vox_raider(obj/spawn_location, leader_chosen = 0) + var/mob/living/carbon/human/new_vox = new(spawn_location.loc) + + new_vox.gender = pick(MALE, FEMALE) + var/datum/preferences/A = new() //Randomize appearance for the raider. + A.randomize_appearance_for(new_vox) + new_vox.h_style = "Short Vox Quills" + new_vox.regenerate_icons() + + var/sounds = rand(2,10) + var/i = 0 + var/newname = "" + + while(i<=sounds) + i++ + newname += pick(list("ti","hi","ki","ya","ta","ha","ka","ya","chi","cha","kah")) + + new_vox.real_name = capitalize(newname) + new_vox.name = new_vox.real_name + new_vox.age = rand(12,20) + + new_vox.dna.ready_dna(new_vox) // Creates DNA. + new_vox.dna.mutantrace = "vox" // Actually makes the vox! How about that. + new_vox.mind_initialize() + new_vox.mind.assigned_role = "MODE" + new_vox.mind.special_role = "Vox Raider" + + //Adds them to current traitor list. Which is really the extra antagonist list. + ticker.mode.traitors += new_vox.mind + new_vox.equip_vox_raider() + + usr << "\red Returning vox." + return new_vox \ No newline at end of file diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm new file mode 100644 index 00000000000..4aa9b323a97 --- /dev/null +++ b/code/modules/admin/verbs/vox_raiders.dm @@ -0,0 +1,66 @@ +/mob/living/carbon/human/proc/equip_vox_raider() + + var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate(src) + R.set_frequency(SYND_FREQ) //Same frequency as the syndicate team in Nuke mode. + equip_to_slot_or_del(R, slot_ears) + + equip_to_slot_or_del(new /obj/item/clothing/under/vox/vox_robes(src), slot_w_uniform) + equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(src), slot_shoes) // REPLACE THESE WITH CODED VOX ALTERNATIVES. + equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves) // AS ABOVE. + + switch(rand(1,4)) // Come up with a better way of doing this - ticker of some sort maybe. + if(1) // Vox raider! + equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/carapace(src), slot_wear_suit) + equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/carapace(src), slot_head) + equip_to_slot_or_del(new /obj/item/weapon/melee/telebaton(src), slot_belt) + equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. + equip_to_slot_or_del(new /obj/item/device/chameleon(src), slot_l_store) + + var/obj/item/weapon/crossbow/W = new(src) + W.cell = new /obj/item/weapon/cell/crap(W) + W.cell.charge = 500 + equip_to_slot_or_del(W, slot_r_hand) + + if(2) // Vox engineer! + equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/pressure(src), slot_wear_suit) + equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/pressure(src), slot_head) + equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt) + equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. + equip_to_slot_or_del(new /obj/item/weapon/storage/box/emps(src), slot_l_store) + + equip_to_slot_or_del(new /obj/item/weapon/pickaxe/plasmacutter(src), slot_r_hand) + + if(3) // Vox saboteur! + equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/carapace(src), slot_wear_suit) + equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/carapace(src), slot_head) + equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt) + equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. + equip_to_slot_or_del(new /obj/item/weapon/card/emag(src), slot_l_store) + + var/obj/item/weapon/storage/pneumatic/W = new(src) + W.tank = new /obj/item/weapon/tank/nitrogen(W) + equip_to_slot_or_del(W, slot_r_hand) + + if(4) // Vox medic! + equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/pressure(src), slot_wear_suit) + equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/pressure(src), slot_head) + equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt) // Who needs actual surgical tools? + equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. + equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray(src), slot_l_store) + + equip_to_slot_or_del(new /obj/item/weapon/circular_saw(src), slot_l_hand) + equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/toxin(src), slot_r_hand) + + equip_to_slot_or_del(new /obj/item/clothing/mask/breath/vox(src), slot_wear_mask) + equip_to_slot_or_del(new /obj/item/weapon/tank/nitrogen(src), slot_back) + equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_r_store) + + var/obj/item/weapon/card/id/syndicate/W = new(src) + W.name = "[real_name]'s Legitimate Human ID Card" + W.icon_state = "id" + W.access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage, access_syndicate) + W.assignment = "Trader" + W.registered_name = real_name + equip_to_slot_or_del(W, slot_wear_id) + + return 1 \ No newline at end of file diff --git a/icons/mob/human_races/r_def_vox.dmi b/icons/mob/human_races/r_def_vox.dmi index 4dad2129d5081210cc8b17f09b135559b390776b..2024f52583b50e825812a2bc3ec746d95564adb2 100644 GIT binary patch delta 1774 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 MGu{pN#GaJ;7t?4TGynhq From e3acd6e72811a90948749faf414271850b006114 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 14 Jun 2013 16:38:36 -0700 Subject: [PATCH 10/13] Minor tweak to previous commit. --- code/modules/admin/verbs/one_click_antag.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 823d1adc2f0..80e58110e43 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -462,8 +462,8 @@ client/proc/one_click_antag() candidates.Remove(G) if(candidates.len) - var/raiders = 1 - //Spawns vox raiders and equips them. Two raiders, two engineers. + var/raiders = 4 + //Spawns vox raiders and equips them. for (var/obj/effect/landmark/L in world) if(L.name == "Response Team") if(raiders<=0) From 04be69a0b42a6d561bc1a78c954c9f706af7581c Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 14 Jun 2013 20:07:16 -0700 Subject: [PATCH 11/13] Magboots and gloves for vox, removed a debug string, tweaked vox. --- code/modules/admin/verbs/one_click_antag.dm | 2 - code/modules/admin/verbs/vox_raiders.dm | 4 +- code/modules/clothing/spacesuits/alien.dm | 54 ++++++++++++++++++- code/modules/mob/living/carbon/human/life.dm | 10 ++-- code/modules/mob/say.dm | 2 +- icons/mob/feet.dmi | Bin 5873 -> 6074 bytes icons/mob/hands.dmi | Bin 10854 -> 11257 bytes icons/obj/clothing/gloves.dmi | Bin 9828 -> 10117 bytes icons/obj/clothing/shoes.dmi | Bin 7080 -> 7657 bytes 9 files changed, 61 insertions(+), 11 deletions(-) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 80e58110e43..099443ade48 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -517,9 +517,7 @@ client/proc/one_click_antag() new_vox.mind.assigned_role = "MODE" new_vox.mind.special_role = "Vox Raider" - //Adds them to current traitor list. Which is really the extra antagonist list. ticker.mode.traitors += new_vox.mind new_vox.equip_vox_raider() - usr << "\red Returning vox." return new_vox \ No newline at end of file diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm index 4aa9b323a97..93f6af6eb5a 100644 --- a/code/modules/admin/verbs/vox_raiders.dm +++ b/code/modules/admin/verbs/vox_raiders.dm @@ -5,8 +5,8 @@ equip_to_slot_or_del(R, slot_ears) equip_to_slot_or_del(new /obj/item/clothing/under/vox/vox_robes(src), slot_w_uniform) - equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(src), slot_shoes) // REPLACE THESE WITH CODED VOX ALTERNATIVES. - equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves) // AS ABOVE. + equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/vox(src), slot_shoes) // REPLACE THESE WITH CODED VOX ALTERNATIVES. + equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow/vox(src), slot_gloves) // AS ABOVE. switch(rand(1,4)) // Come up with a better way of doing this - ticker of some sort maybe. if(1) // Vox raider! diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 3a8824e644e..c17f1b5aeaf 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -104,4 +104,56 @@ desc = "Weird and flowing!" icon_state = "vox-casual-2" color = "vox-casual-2" - item_state = "vox-casual-2" \ No newline at end of file + item_state = "vox-casual-2" + +/obj/item/clothing/gloves/yellow/vox + desc = "These bizarre gauntlets seem to be fitted for... bird claws?" + name = "insulated gauntlets" + icon_state = "gloves-vox" + item_state = "gloves-vox" + siemens_coefficient = 0 + permeability_coefficient = 0.05 + color="gloves-vox" + +/obj/item/clothing/gloves/yellow/vox/mob_can_equip(M as mob, slot) + var/mob/living/carbon/human/U = M + if(U.dna.mutantrace != "vox") + U << "This clearly isn't designed for your species!" + return 0 + return ..() + +/obj/item/clothing/shoes/magboots/vox + + desc = "A pair of heavy, jagged armoured foot pieces, seemingly suitable for a velociraptor." + name = "vox boots" + item_state = "boots-vox" + icon_state = "boots-vox" + + toggle() + name = "Toggle Floor Grip" + + if(src.magpulse) + src.flags &= ~NOSLIP + src.magpulse = 0 + usr << "You relax your deathgrip on the flooring." + else + src.flags |= NOSLIP + src.magpulse = 1 + usr << "You dig your claws deeply into the flooring, bracing yourself." + + + examine() + set src in view() + ..() + var/state = "loosely" + if(src.flags&NOSLIP) + state = "tightly" + usr << "The wearer seems to be gripping the floor [state]." + + +/obj/item/clothing/shoes/magboots/vox/mob_can_equip(M as mob, slot) + var/mob/living/carbon/human/U = M + if(U.dna.mutantrace != "vox") + U << "This clearly isn't designed for your species!" + return 0 + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 5d8dc1055b0..0db1f949c5f 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -470,7 +470,7 @@ reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) toxins_alert = max(toxins_alert, 1) else if(O2_pp > vox_oxygen_max && src.dna.mutantrace=="vox") //Oxygen is toxic to vox. - var/ratio = (breath.oxygen/vox_oxygen_max) * 10 + var/ratio = (breath.oxygen/vox_oxygen_max) * 1000 adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) toxins_alert = max(toxins_alert, 1) else @@ -490,7 +490,7 @@ if( (abs(310.15 - breath.temperature) > 50) && !(COLD_RESISTANCE in mutations)) // Hot air hurts :( if(status_flags & GODMODE) return 1 //godmode - if(breath.temperature < 260.15) + if(breath.temperature < 260.15 && dna.mutantrace != "vox") //Vox are resistant to cold. if(prob(20)) src << "\red You feel your face freezing and an icicle forming in your lungs!" else if(breath.temperature > 360.15) @@ -501,10 +501,10 @@ if(-INFINITY to 120) apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Cold") fire_alert = max(fire_alert, 1) - if(120 to 200) + if(120 to 200 && dna.mutantrace != "vox") //Vox are resistant to cold. apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, "head", used_weapon = "Excessive Cold") fire_alert = max(fire_alert, 1) - if(200 to 260) + if(200 to 260 && dna.mutantrace != "vox") //Vox are resistant to cold. apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Cold") fire_alert = max(fire_alert, 1) if(360 to 400) @@ -602,7 +602,7 @@ if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE) pressure_alert = -1 else - if( !(COLD_RESISTANCE in mutations) && src.dna.mutantrace!="vox") + if( !(COLD_RESISTANCE in mutations) && src.dna.mutantrace!="vox") //Vox are resistant to pressure loss. adjustBruteLoss( LOW_PRESSURE_DAMAGE ) pressure_alert = -2 else diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 9f3660eb7c5..4f2ab37106d 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -81,7 +81,7 @@ if (is_speaking_tajaran) return "mrowls, \"[text]\""; if (is_speaking_vox) - return "chirps, \"[text]\""; + return "shrieks, \"[text]\""; //Needs Virus2 // if (src.disease_symptoms & DISEASE_HOARSE) // return "rasps, \"[text]\""; diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index 81c75323041f2ad1bcf93cf25fe95362f1420486..d994f6a63c1375660e24683ddbdaffbe73ca54e5 100644 GIT binary patch delta 5500 zcmZu!c|4Tg+a66BS&Qt3ij;ksjA*QdERlW7K8R4VXLv}GEoEP_C1D7WU1Q%uW8WD} z5|gZBAM=~u_xH#5+xtHM+~+*cIp_I&uIpU)echX4^%AcIsPsNvkvJu%qM~AIYWncu zLl7AR>H`^F=XX^V^SL9X&JTidfi9f`A*DeLQlgw75Qxg#K-UnY{A0q2GA>I9JS7O+ zHfHN*y$lhYC~E135A5u8C|g|0KTLq$iR*%3W4`Fj`K}+`svu2tiJ2GZBsB_3=n-zL z8vS+zwi_e)HPNqw8$GT4S0&ix0=_o7x}4Xjs}M(UXgG^#(T=Y`pKM2b*c(icnp0U& zwlf!8p|_%HMe7R3DS78`)O}tN<`D(%nK=nXptI~y?+)468r10tw7Ibf&)K)B?U&S$ z*^Q?Tu6!EtX}x6=!qHKDG`_gVaN(AdoSHOcTS+19{U-j-(R>}7sPMV#CUT98EL{(z zhBNzE_a;K@tc0R+-Lg3pvlL`!JUe0GF!@qympK=W@A3A(m8M+M7(Yh8@KWlqe$Zd*^h^Cm ziE=I++#?L_UxO@4m37gU3_vd9;O7jSC!ad z$>g}_Dag&OSf1_c4X*v{>$d^!ZXmxG={La$A@W%?Tl&h2$>f1REY_O0RgC=Ku4P6B zUg%2ejJ{*m)@PRP_WfGCgZ8)F+Lg5KQ@3875#^2#d5OPokDw`E0=F?U-}==)N2Hn* zfS(<==!|MNU^y$CY(WrhVt&b!|A5)Gk!Ds$>f_}H;fnvSJF1!oGg6h|Gq*v z54%)hzMYz^RrS3>n(#>TjYF3Bv0Qx=R?Vk9ud1r*D)dXcVwZ$-XO)Ntm~(9?$_>+v*1*AZ6z1qlNxlzy*N!Z&#}EhI5{h~NZw0^YUS zyhHEDCp!pcx<{D|qHCy09{qitI!61wMyxjC<5d5oL|gZ&ALt@y=Hv3}m1A0-5*PV( zXLxz+aqtAwv!t2x6Lx&6)4z#F+^rY;ydrG#6Q*0LeX$Ip{vPwDX;3%9#!Ry~mI0NM zF{!*I&Z$JRb>=s4uEg6H#(f7@@B^aK;su`6dzMqJ!lXkT$kZ+;$@yzp8JXKNk5%=A zrqY}cnvW2&=U`I4lI-d99^~Y=s~@q$2RT=SyjKQ!i`|S%(rr*hO|dU=w+~R(PCMbx zW|$9GTf-JxT3uCBezsN<1N5PEAKYTULPmQL8TSukNr^!1*9Q(eWtrPv-=dnB`j*E_ ztVG62t!`E0(yMG(Z1{a5#ob(#L`2$DQ~G|=9h9m*;2Je~QA{`0-0GTF`jU2-u>I9X zH1S&*ip0I==Nn91smquzPE_vpcL*} zn>6f928mJwg0)UIG0Xg?{=&3;V&n~u=_qu4^Apa?$ocqWf)5oJM=EWqKP*{;bNl|8 zV5aLk-KryGPm5r>*uABI#?=ZrLT1#=KCjK|{!QxFUk?>-A5g{)@N*+K%&|%fn69ol zaF9~hJ}=*q+`yhFc5ffpue^sXtE3!9mLJ$oW5nStN76XtCMK}#T1}1-UzfQO%79`I z6hd_Mexa*sAXsjUeJU=?pJeHSx8y~b z6mey01hJiMlDFN__W6YN6c1PCyLVmcgWvSRow!z4mXAhd0VEgR=}YvdlaJ|}MOAMq z+{CpNaeAEv^nF#Yv3t?9)7f#U0+`R&CGWNuM6wkOV)urh^j&h58f!9!VXpXNY~B%5 zO85T)4>TVVM9KiSFVltu{x=?BG$1drtjeb8vLJ|xDa4P)WCBk&bQfr(x;yO(bw)p2ukDy3M$19J5~yhz*I zE)WI%RK|q_CS#>Bv6#*p=|uN3dN-{E0`^^p%P#SeXBn4~dD>u&-)qA5_w^54gwRHf` zTX;;E?SsB(dT(&1DPmyV!{l)Um2%Ps2BKJhMl&XM>IUR;^d%Lx`Ul=UpLD!?##8GD z7WdqYQF?rMLE$FGnafD=Px+?z&W3BVTcG+(Ivg@OK8~*qHCt%f*N@x*#?+Xc#s4ef zBy78z{^T*6e7+wgp)!I4m$}VYeh8(~m-ve(_B2P4rY}ZXFH%13E;)}aTIKRU8)(_U zYxP{n*;|Eb5kDKuQ*zAHItx zx@o|J*T>eQG-{YxEXA$PN4^h3lZhTd*R4@c9nI8{6Uklq*I^mqgvz7iRNDEju~tU7 z2FxO(C{ip%u_3Ob`E;cdXMf*|0fL%BK9)Dkz)Bhf0{+d{c8~vwMqW@{*`thWY|$}P z$O*D&Jrsu*@d#`*6Lw#wyU223YbRFsn4)nkz5^3%4Q`M}d0fQdr}cl~;pGl_ScdO` zsG%mz+B6?!b;9JxZ!a(<33x7-uHE$Ap>XHQhWke*0C@Sxas%6cQURh{m4x|*zJXb* z;M?i$m9C4;r?X>sj`P$`qb&m$vu3Zuph=ykqDflQelMZZOJmn7jYWxjE>>_^nQb*T zOx>#t^2gS+RCI^w!F_)0VT~3(fnlJGI|nxd>M*dW3q2HNxP9TzvO;fhZ#d>^R*4A; z@SPZMniN`fQ|-nzVJEW0t?XEx;}+aeCY1Meub1Cptn5>cS^I@@NBlH{*z>i$7ods4 zfyzb^HJj#kHsl|+83=ab+J&1-Wwq{>^b}SUj93+x9QL`gp}6rTB5R;;_d>qe%%I^f z*w2ovtVP{P<(s42iyZoPL%Eqt@&GFKZ^?w5X~UfKw={$NPWwJ9NCn&e`OCaZ6O_Ky z+5dlL&4J)-NBC>fHwOqfZI)sL&t^@xaf6P&kQu3c1Lwedzm^z6f{3wURM^T?TZzih zoX)>3h1ry7q8WMjIe?{Jlz+_TN}5iPl!R-`vlybbA}0vA+6_d6`BdG200E~cbgb>> zdG^ld6L;kwVc;dx%B(kM@y);KXPtLRNb*TgwfycHj?6+}WXlS0itGEi_j`6bCP2sV zP_IKz)9M`^Ii_^cSs%LTe{ukZFhzwym=I({5&8b{+YvROmG}s(r(^~H>4G=!$rssO z3$`Plu-oLI{TDh&M>Z4C;pT!?=j;Sd(wqWTfjeEjsz7ye_iOW)z?k~W!pC&zD4RsW z%MOXQ6l=wc42X>_?FEV0`W;hF|BVoRQvnMyJSS~Z^uFn@gvJN34Yewb#{I9+8a*=a zRW{0)bFBe0w!(V+k!<8W3D4qxYXJnZZ8<$s6P-1GfQP7U(E5Qc9WXSpQv`D0h$@qY zY{V~9vmsl`&p61Z7KUtmP?#`8*j$njA9uIhd>9V-}Qzw=0 z;d3B@VP7DNJgM|2UKcBXf!iC-xwVWsr^!ASo$Q%glvu**25yTU-v3!%$5AT;AUl zSOa3$V_nOhSF9z4Mlf;us2T0= z8L>7=jGvFrTlj>(svDJX^%WmooWae_QsC&r?Lv0F@nup3B}(AIe?c4qgoPaM4l+Hf zspT(+-RR~~J~!kC+E+e@>8EruErxxJ)Lj&aq3aCaeI)(&?v5Q=o$k`3cx%UvFMDYW z2+!wL!R#$7Fp35^QQ6bY2^5q&y}*#kVUByl|3>=%2O1E4NwgM{KJLW2id$6}K2yO>}}_iyI97zK*_Dar`1sX~!=tv~^KKd|nV z8GV+#G5lxZ;OWU-$1s-!zQ2kQgE_=h@;pKIU z`61`MPaLTaXwLivf3p(s;sphHLsKj?beTSrINehJ;({MdF#bzunkXg0ymxshR%MmT zE+;A1D~mg|-!o!f_Ewg&R1pvT=^7a3|8|z^4DC8GP^=e6U-+SVQkK#Uo~XzB$$nmE zvDky`?cB9{FNR={YH5M(mP<(&n1P_hUvf#Cz1d#QVi6pd)q-L!t^V{dFi#p>ell4S zprf5{@x(lhSo6MHN{_u-0gy!Vv$gTJZO`>PBC8MD&i8t%I;?Dky0bB6Dg>HvU#s~5 zPyUuQOpO-viSg1B5JPaUBwrLAkwtPjs%QVPeL8s-=-ev>3>1Io{IO6HARV_nfqvp( z(8&9dG_4;Ne4;9q8VYEGvSlizC`^Zax8t@O11R^nt(ckeSVN>N?CAoOO`QmZUu zGBuLY|3IpEU@PhFVtk>3#t&xMV7FItEE1^he<9mWpr z*s2eV_p?b(Jbdx7<^he=ZcBL(q&d16!Wd^|hQ6oFqpo^%E|T}B+>V&RdG^l7j5}N@ zq2H}Ma^NAMS@_k^W-rO-V>e1gKbz3=@bP7*UPxeh!mVxE;B9$Zt;i_8YojE1+{ZQ+ znTwyDoz0J4d^eTO)siow1=n90ltL7f;c1Zo=Xx@q-l%du^I*suOy&UV74$}ocp#1Y zd<5Uhq0*tG3hDL&HxbxbI6h=|7F18aZ_O@qyQ+-yMRC@(lJe>d zxei)M5J@y1pTNGf0aFb2jOS?mRsRlXu#B2T(rLPET~>I$HTHKcc8xD85;h%B5b8WS z!V_lpPh>w9ko6rQT~`IW+-p?pygg9l;w{5b-^Wkh0mpzCwNTKEGgtvAZQI%L_F-te zMmkW6R?*sUWfSB!Tz4msWJy-`uCb2WUZNqe!PqeWz>LAyE;>3SG{ zTo*5@1HenIzdT(_ul2p_Aw*i0@gxc7YnLX3FOPUCIH3&5saf>`;%_uN65WD}Y_bHQ zCO^#ObACUYYES>Z+QnDgnZ(;IOKsI-VS4ji*Fbn|zB79NMs?_r((JC`uoJ}UsleS8 zKGm#2{F&}p?;nRgE(1Qq&Kwb$p(WlCDQ_38B&jc!d;->}3O^l!?C=lW>oN{~7bbf? fIK8}L8bOA9=))l~R<;d))T61Ud%INC_St^`OAU?$ delta 5297 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 diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index 44dfaabf477477bc3ff18d35db2a75a52bb078af..6e2862349be97143bf9e31b9f91b40ebff7e48e2 100644 GIT binary patch literal 11257 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 literal 10854 zcmbt)1yq#XxBd%=DAE#2N+=*5(ozm39nv8oA>GY@N|z`~cd4|}Eh#MyNVjy3!~iqH z+;{xe{l#71{jYofcP+=CR z^7&=OL-0l?K+n(%^32oP!@x6wGIwTw` z5_h7pR`QYmHtP%E6qTdK1b)c0i=FoC2AH&_&>2?@qV6!$9(>5{Ia19gF5VKRI+hp} z;!)h%KPHphe?^#X_zW$#!Zu2KlZC40+ZX4hR>*z((}E0(uIYp2YcE&{f8H@Hc=|!O z`5tk0v+yl~{rk_}E;XvYBt$(6zw`+5=neJ=2rn7QTP7i1zAMo%hf`o3C|9!arr3yS zij%S}K5RPqsu$lgT4&^UW3SeF0sfD2-FdJ8XY$msj9=-+Mvlq*+e-vqV+cOr5hC=G zjEIRaU_30o6n&UOJ9QN*tWo6K!4$8{VK8eh`?;<)w~UZwOY)#tVOhKE1dk(UMHrno ztv^>s-;jQH&()iD<3oAe6MhpeoTY;c85#bf30svx?=&cme`fqj)h$Uy0JsCFK;-oN zGWX{FGpP*HL=P?IgLh6&`W38Q<}GrAvHpz_y) z%i?6VDYXI}xon5i!?(Ae^T4&u%;Jr{*yhdWa^jY*(j~o3^BA+>VmOZ_7^G(EV}mNf zPT!(#bDIRwD_yQ|MxC*)QGO^D;)&1?Ym$H=9g9L26Q3&J-~0LV`AmqFGtUbus%vLx ze{yIy?(4@TW3b5*#}R`p*8Qy=SPj}Q!BtPgR^m(hN3WS}FEu#Ihe;!%mdD_uXLmRy zRBY50VYzhX4qJ`0T{?qj9#1~bVqma;?((z7S=UoYLNd-QhhOOOgCnqA^GHP{di`L| z_RFYWysH8-Aih2*&I^>lp$5@YPzl0_z0Hgp3N;QLuMeV47#2Td4%zrX%L_FMoTjSe zJQqJt_kB7uy>bskSNqk+{}oeS+6R*SMhp(5MX(&0kZp?yC%Y z!)vF3rd$ao5N?A91HFGCyCn3#1@->||9^&h7-q?~T@ROkG|IYIWr>%gq#@pOlo;2| z1u)3xy*~7p0{?w0gz1B(v3#zixJo5U{emipiPI=@gXwm-0U&`DOmw#u0Gw#%oBkQX z#T*^QRuo9c0U}6EA|6z2{Mu{+j^Su&MEu8iy-7JZ>h3` z9CZyTOq}(}hO0LS>4EwqzS0Mwf1%{X^sZA?bZzY;C|~!WRcqhO=BlN45UYpa&C&KR zaMWOV^{MEN!qP}Wg1dXC=mXKN4Y*-e#K&WLN1=qs33z1J5ub0_C8|6@CR1J<^Vt|r zt36iAoY%L{L|Sp6*j15{v~<;Etj&Cthl$k)eGV!<=JbSCRr8O zkx29WwwJP?6y}?K3n|udwc!3weAfR+y^j%G%#ZS3YhgwVerQ)rKr770TLsS$OuO@g zM~U`CUR0q%7Ak$B6o0)l#SkvxFMXD{osau^LUs8i6_w(KTw&S`*~$qOGAh6fG#joh zKodJqiGYQMWJ7+2F0!#N@XZCWp}ZDI8#62_%r%b`kkvyNb=}=!h1sI;NQc3&8Qykdd^l^BQ@6MF|J-i zNi*htNZjhpu2}c{bDl1w;|Y9J0p)H6=xGDBwDnI2psbBvy`q6(f?;2Ae5JGqFs~+} zQ`xliU*$q^wF;b(pVF6>P63v&YE3;O227ARj_h8y=i5)8uBTHR1v!_BUm1u|+p3)C zTiiWcy_626ATq~6od!71Vooo&!C~k~(WFF?L(pObb3r8Gk~wHa<5l=oIvYXwt`1cTfvDF&8&JR>f7ix;R!f zSVcdCLiM3(Wziek`1}ok{krt(gEp$Yod*lQ1+ap;0+^-zp56uJLAvpUOPZ%8TL(5X z>3EXv%|g5Lb=3qjd>B+FeQDdrgaE^0)R4eF)@OX9|0jO*^hsZ47@EWuuiHu!C3t8A zGk!NbfZxd%kRsB+>U#Vuv}F!YF8SbdI_~!F<`PV{UvPCxQ7k{`{Y2LiOZ6=$pJpR* za$?osTc$!+nIz>P)?LUy!PXUr{Qn~w|8r&k61aQSm*#R%qn+ zn?j|Wxw1y&K(3F~usFux$<3i+74-;5lVQ2xe*3V`ELYGsg%PEn?nUK7Us!@OV)5z` zbZJxWb$shh-Ru%~`OlixFEz9(v(Cy&iBu3&lE)_=9tKa7rW>-tKkpxb40 zAF9{{`BA+(GKj(w<*b!ONeADNEQcP&n1muyuCaX%0M@vhXg5vw7Fpz(uam{X%-s9rkh0hQ> z2vrhx{B#|C^5$W=vW>Z-CaHyrQls}t@F>SH*%TrI@1tAE#MWyYTc@eqni3@Z`AmeK zYYwyXZ_orGZ+_HXtvbGBSed_3iADBvRn?@L`G}tt&iJ+b$RCexbeF6L9D>spc4jqP zwAm@{%{nIXkdr{km@=j!*iXBAYqadWQDYw4(4Al6d+o>HaV>wYY`QsPue81T*A+vf(^3|D93vo_-pkj-YHiF>BXMajeo}v&1G~JeCGOk= z8Eh-m`6b6EPQmhaTe>64*AizX1$}Yf?B@KfJHisxogVSj1Xt8*9acv>`&oCSo_K@y zmaIE=_pMrN-aCo2jA;w5EVAoE@x|H>d_QV}i-O(wC79#VSZXCMmBpzh><9bRwwGLO zp~J%KxZmesFCpvCSUqmnpSCW`3UzPN;c9I}-Qc`*!`@>|*wqt-(l6^Z)(hM910Fa( z3T(1~)os(eGxso!lseE|nAEJ<6koodJD%i@D8nghfF|COEzB*3>hV3Sk@a&#r59W1 zRX(hPKukI#)Rg|1!yg7(1MczgBD{EuW&)H5q$`FQMy}r{dY@e=ZQer2ojetc!{>o} z@(_r1=RcF3wfRYQ{ke7}G1bzfU56e}`NPc$Gy|^K8OG)1gt{AyuCV*l6NW>ITCeSG zg*>AEdbCX_%YZVgL*&+sKl7GgyX}3L6YNh&0{xDqE89!Z@`rdzD%H%+>rZfQ$zD12 zBiq^(0R5Q}2)}zX6pG$^i!QHN2a43!H0geTTA+U6woxQ`JU{w^Aj*Q0a$opnL#?}UWz(_mhe*r`fK;2Dm|LCH zb`Zg7)b7Lliwi#s&Jrb=1NCw9Sn_@^8&YrAXYaEF!<)Fn3uX!34`rT9 zQ!dRDTa;I*fgeu$*7f&W`>9(}#iIOt=dgk-b)C(xsk=9J`j`k0&R7cLycTqq4fH~a zrg&3zUL_69&#(J5`!Fvs^v(6TFnEtW8x7{W=9@-$L~#Vyn-%&`L#P!-WWg@$iX_90 zVhg%zTb;Kwv~^9KjG^T<=hK1RPkc2xs^@)(x&x~&>UauH_vl6|DRF!`i-%NKziDbD zI^=!dJ}X$G+!y!OKxX8$Dy7znNtn)Jug+BYgv;CYpF25Giq5&=B{0b(xQWHR<1$E? zspm1NyVky#*wiFJFXjg9OjeFw`2AwJ{Gcn#4pS1~6JWYKLaVNlBId{sUW1PwILjEybY3U;a0|WE!$(pN&Rx5V`-twf=>TN{D+jygvu>yX-E)6Dv z#YK&L>|jbnJ0S1enG{CnU-TYv zg;Nm!+iM+b>w-fh8f(cWbx!2VZhmSonZ}q=g{L5v;f}fgUY|JQzVidC+$ah=VsJ03 zw&a<=;PD#y6-x|%|2fU!W zg&Ohk@nGg?(H`;;n>n5w_dWrm96KY5dQ^t?CN;o7OGno;{!teP0MlD)yGNh>16J?5 zpB&!+fZ8I)*e`kV9h`Rzf95SF4u@81a5?q za2ZtSU0hszA0L0^CgudXrnJNbMCD^8?uaf|1hd3@D$kQ)-RD7l#IOP*{H#QJMAp%8C#wS0e3{6sb`I~xvhmBtM#HHzg82u z`;1>V7%xY`pE>c)p(Lp%g$-OGX`6n@7i4Ghv#;xq**P3Ym!Q=Vywr+)^dI-I7i|Nd z%a9opl;GNEwzs#no;-OsydR-MfT^h9E!7oJ@YEy{)$l3kEN~vH>|FgC|90MfKl%^D zBh>gL02WvNM5^*}Ms;iBG}-Fm3J0WB1_Lb4%wgEwym3@FMk+7P%ddoYZ;q?mX#^G%6rqr}mK<1cNwo|_fwA`zV zC#)^54yTy!ZEtlQL=FsX)pb``_U5r>RoEJ+h8})SoLgP3eTEJxGi~%RHQjfa{;cq- zYxza`rS`*C_jiZykPp<`KZKl4$wVs~OugQ^23C;Xy-ge1uY4ym-)z_rGmkYN3k!rw z(q=53AlmAW@xcr)2LD?t%BpjkW{HW79h;mKb)o*M!YC8Cn*#~&dzoP9G{^ly_i}|Q zlw^BJ#(f0>t_zE@4=*vtv9Zg<$%a`ZQ~(H85QL}@%=dUVNF(JIVFC9hEoe~oWrl#4 zVS7lc$ML2%{lfrC0uuTv(9sWpD1ZNZX4&@;{8Sx@_LX6AdVq(`;w%5;LH~@yf6Eg8 zCC&MJ`|>vdUX*)6&|Q@=Pj~1oy?G&!b7e5K7oBhRv+qE6`qml!e%y2sX+g!_wu$2- z9a`!WbRBtWl!Q;-Z;NG^a4f_0$2`_B!+#2Eja8WMW&vc2CS4xOr|XS$7t%3wyciZc z*BNM%ic+RUPKrc1J|>79>W{fm!ZXr$t*JQFw8w?$xI}xacJ;(%CuVWs8K;8L*|QKm{KB`!q9KgDWI+v!UIhz_g;w6tGgVfnGG#ld!e zPr+UjVci=+TpSO5+m1+_FuC;G76x9ubqGSia~u**n!TB57$b>Ynu%d;62ET^8^}|T z#|zCG%->y*sisfTyP5?TE_OZhRmWd~F{N3wT3x(?r6f0KJA1C2`%1XMx@4pd+L~y> zo>4euu~ryUbo8g_Y)amKWOq`jgeLnuZP(H}T8zdD6I(M7`O=QvwB$h0)M_p3#B9ly zXd75IaZ9GOb`g%Z@KX8*XLa3@DM5qm^wnQc_8)vxKh3~6B2Hb-Q8>IlApdM_zCLzT zrZ#xI&CFn33azh68B#**GPx;)@<%@SZkl@et3WGRTJ3VX{ps3I6XCt1^8@Hp`<$(I zl)8D}=)ICrCf>)j^vN#ylwv>hDVOd(HlJ?@?IsyejQ4B6(uX|dHbL7^P104Mpp zc+MC=!YN#K>tAE)!08j;>p5K!*1-ZnVAcQm{_M>`n&?m%NjofIw*ADK7xyOlSR>)V zOmtL~uqC#D0mj~-u_Pt)GPHqZFQSOx^V58HochZPh~ZF>>rl>%%RE7vHe$No4_ zZy~t;K-ZlW_2!VQa%#{EXOR2#o%s%9SZmF|cCvk( z*o$9Dpqd~sTmq9Ww;3uiC+Syj!{N^*Xfbd0c$DiAcTU%ta>X(arx?iKA0`~eZpED` zR_&GUQ%FY=gEm|b-RVo;xX3naQ#Li)@9Mu4lfFC~CCXq8vN~tM0dPv@zx%`=c8!MU z5uv>KFUJwt4|qgRZh76kB8?gM(M=2s@aJ36-ZgF4^DL8WYd4uPW#rJH3Aw0FGumiy zI}))xI(r?h;5GbU)OG6q+*{s9pU}w_EwwdV6arHZL!=NzfqfI_h-E&gQlYga2QR75 zgED@e`g39vf|8)CP1QR|1nLj3)=PUMmdV&Wa*!(Pbw!Ie1?j%U1GGY=1FJN743yQ$Ws zAv(8f6e*f$iN*E~#hlKT@a0g4Uzi@)Bxo_56;lRkZFyTEKQ)gy7|i#ob@fcOZS!h_ zj~-X|9ZN}{wA#JX3_dWrOY;)iAD5vOG+oP)?$KBg{Lq~5aYY+#(PS%uZxGa1zt3uH zRZ`)++!K_+>urb0+RAx4*|CX~{FQ{nr*f-rBZ8=zP#a1L7su{EXu&6+sm6o6uVav| z9uNo_Zh8~Az>ku|)t4C52M7P%=Z1OM&o8S((xFcgP(^%H%KM#}$vyY3KyA*Jl$2FG z$@g~N+%8DCpnFgGGf*6YS?*@Y`_crI^~46jHH1fPNCY^e=j0+YnFgKmx@cz!*><)GkjNF&HR?l{>qV+bNeG`gGMH|NI#F$H0v92^WNF_3`gb(8SzT@e zi;_$VG#25%jSe2NmwYaD?On-&^6#NcT8>EbcegV}FR*}7I4?txtRF9&gY$}SjI$)C zOuu$WWIZ_r)*sA$+-ex{KjTf3CJ(cZEl{(8UOqAVB{wMJ|pP%aO6EE>)F>4=!>uhaQJS;4QD?B1u$&7bEYjS^VE zL2QC6Wu`|)_oyQZx(OPB$v(1?alq;dg58Wbr^jvpZg%2;-5d8;m&?-=8qAUIziKoaWkbJq#1;e)&ilWYRtcf0$elE~D#+Jgs#&RStJCeKv3^$#=5*q^ zzO?geIyP_c09nPJ_RX~K_RM4;oT#CA zocUbiO0}-59Sx?uewm|E@f=0k8EjeGmbFJR#cqBTGhxuVFS;*OouV%fKTFzGW0{~+ z`1NfX|FL`1*!f&Y*Gj9&h9@#lY~BuS^6MLUVL*Yh&%Hc9R8@+8I<-uSAes~6m7jn8j0l%2QgtiZd-OL|Y8(>KcWN)=EbXG{+2ONhJy7 zFwBdvCuCkRCMC{fm~`&SsO%F6UM!wZ_hfJ&KZ{{0h`h5VTfT)-@LZFRnLc=lCE1$F-^HEIRs zyKVfcHV{v1Zb4w4L%7|t)a~ortCIk5tqXe=AX%Sf0#@N@>AAe_-03ZcpIIc0+I;zi z2rV_pl(Y(cJ|4v^1L1C@yI=pIY0DZ zh6@K^*$Q3pGRmZi$1e%}J%kMmcb`cMBS@uJLSZt=sBI)<|E=A7|A3JI-F_PUcq)c|GiLU+)J!7Hen^ZaYhmX3I;&^*(3VTXe8)b`>KW=~ z`}(<(KUZZ1-~xs?cl6?um39A~hNsVgFr$fvlaI~e6aGo`ZFTMm4M&e$h8l*#!|N&Y z+||h}X2rmc@LGAxeIRBs0pmdJcXV=P#)2+1s<>Punr+1gFC>wHk0Hhic9S9MuGpz= z$ROC}@bbJepM}daD{1LDohRnRjhigwyw?%!OL2zg;uNFr&_o(hL{TdgRXVk!1-L;waXAW z;ESCt4JOE?iTuMyucgoZjHq8S>#>p;L`7bvtr{K)27xPpexFrLln{vt3`-T*+l3z0o``%j^W@;B3wICb{ja^}kQKyha4OcoS$ix+(&8z~SP zr<;{ji3HyY!A6>-OH*&8YRS~-h&X=oJ6uuqvu?ddFS3`5ujiy1>r32PRZG#hJycZo zEkP~daC^fsaR51c-aTV{h3h`qA(GgEZwbL_s2v8L1Bj?Gu#b~oXe@37)E4U<5TF~* zYZzT9I{6NO&bi51qr;9M=IFWEc?$_+LIHbb#|g}|0WA_7++;7P<(r4c*G}G>C#q9$ zz#mt@uH(0ANEBm+xg;TQTgI1V%kIqR`y4AnpF`@_7+R>jYJd!MUpk!T%GDq^EU~_h z+CPRV5#P8lXqQAEkI68ocAQrvu5>J438`(TQAvsze2`i&l%Ae3Ha%u(pYhkp7?GM` zdCOk-$ldwaj&0fwEQ&`^q9$%`pYmS24C&BV&d!|ha7%-xa_9%tt1hnWx$PxW;snvb3@Y$SksbS1B!||NZTZpYywL}lgzi(?SR}%aeaSp z{M<8otrxsvmGr2Q9G$g@-zkMXMoHXK*8p_H~7M|u151ea(#i5!@mup%g$Th}6q z9kAYyvXbGTeIWrc3cn-PLwt8BR0l}R%0(^t;5?C&)aT~xEB}JJ_I_%#Q6T;sH=T%+ z7T6H~(-TK-O4`5nMc~Yxu0HF0P;{-|_i9ekQEB+%sucIykSJ3ctF7sND1%SSr4Ky< z%{qz00bMf#y*!KcA?|zbCl(g2-h_}JD_11`Z)IAzrCZ@3*cXUg2(3Nq#}A?u)Mf;O z$#5OdJf|%|B_5#mSyO?ix8+?_RM}U~J3qKLeG53}<5f;SPVLQreIJOhA~#St4K^R1 zfK_Qf0e3R^e#68T+1M?2!YHpafz0iHj> AO8@`> diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 9a8ee374dd349c3a0f2461ba8a3f09977a4e5790..8160eefd314b6a8f80642f58cfa7d660b9fd4e40 100644 GIT binary patch literal 10117 zcmaia1y~$Sx8~pwEWsTDgKL1`?iLsYT3XBkwtU_H%;PTWlz*U7HA)-!oX7 z@_11A@qJ6x#jA7V8ve1unRKP>Idl%1OlXZMU5exq#+xiOT5;^wC$`O{azA$0P$$58 zYbBLn`=@2d*uf%5LCppw`-Zy8)ibtn_kMRG^po6FCQV4LnPOQCX5k)G<5h~8{Hd`T zJ~f3MeJQy|wYIRP^=4+GZVUZ`x2J)Ckw|i5NdYe-+A-;56N9!Qm-E_59W(R9^PHNeeFAO z+O0|TSS_MBCFWPt@w%|mG;eE}FUvv7ZGYzFU`^z(CFZmEloZC%R37>A>4gOqNy*Lv zKR{4WkS(~}90di%+1QvWZEIt5^NkmnZUD9P2h?EdX3|SuRj4vFP=BEAi)b?A01w_v z4mr<gy>|Pwwfo zUt=8(v8r(0zYBTgw4u#4Cv7FX%oBL5f4BmKUU6uT`l;Ds?{PbSKFNN3g)%fanDCL0 zyw+;e^3PDJZByTRZc|h0`T2Q{^9eES_wV0HE{J)ko;`bJo<97u?P_UouKvU1>G-$? zylJN0#~ain_5c^KoW;-yO-)vuc|O#YV%7vf#ZV^hqCzQP!)66n!i_B3oz_c3};rDod6{9Sr z-AbwVGbu1|br1cvA4BQ;oGn}@)-6i#|G%ErMg~o1)Z!igPa;l9C4FP$0 zG(SEEA$?G*;G0L6IxwlXO}hE^GcPAcV(Eti_3hmZpwGz=J?pvuixG`E;SQKwPdT73=VXNh!nBMDMKM53hltc_4+B)$#_G-)Lj(I^9!)WgL;R7pGOb98D<%(Mid^)B) zx&7e6!otL)q||5=eSNZ;yN!W_#N_1ogam0*)0Y+&7H|@lda$RwG(SR+g6I3kz^3 z#AenqHO*~xSQc|dPKVD)PcJps5I$i7BBC0fTQ>t!Q&UjWyMwv<5)Zhh^K)|iYiep@ zPwG!81$VSiiB@GODv0avs@_C;$To$mid2_xDZ4A5rb;#n8F?O3gE*S%*~jLJ`wNQv zBuL*0>_h!G=wfIM1LOq{*H!7)1@j0_DBLUnXSVn~^irM%j^4Q=kiPZK^%G=l7UTri z2W^DH5Fai&N}(EjIAvt&_U%gXVPo#;8{PnuNTz!0=Nl zLzDSvJBWi?OQ3Ta$;aqj4B0&_UGx!dA#$1WP6L!jFdY=Q+g82i=Z6cNLWByJot@p5 zabo=hq^B1)<#Hb}P5Z!d&Pl6fBx!7%_0hvV297sb-iLy&&o%V*p*~lOA$-4sA~r_#uIvUsaD=`I>{RvGD_r??>@flnqca|X z;qD@ZPi(uj1biX4U_WrWQLcZG4Rz~&qY{1%4+N5@LBslyDg)NPl$qvU^SlyO660C6 z+g{tFCpZYU-5Mq~YN+$CVIKs|m4tp3BX7Q4mBQ3A(&9F@{c_qkA?gh7K!8AyWj{LR zp^e~n47hpJQ{lXpasuS#925j9- zT&hNkqFL8==TM`9pHm`X@T_3-BL}~$qV_#I;+W?@O4(ROc%ZVLI>-EoG&YUVPlHCo z{0xWEWwv3Fe!!@lix)irArz5f@%S`%?9*q<(MQ@XhJ{E&Y|gDaa#fiK;yiK35__TN zw7b2jCFwXl3fi0_Nv%68m)=0n4z%c<=P6h|2VC7~qoS4Q30EH#57YDer|w_ftxnU? z`mF9jzw@!^4}8zNV_i<%5QD^DoTn^0s!YPDr-#vrG`mv{lg*uqCzR=AenYQpe*TU6 z{00Ae*k?mvrw#v~a)W;**|FAy>ZY!jexBufI@$G z9iny%Np(58A{UV<|D?}-?r=u=(-{M!d-4SVL`#eVBgkXgYM8H#4v3{A@0gcIUl16) zhr}S}%xCS>2y<8-X^u4179(jBTlmrqwa_iY)q&K9;tyAHJs!*}UXPOf-b4Dcxj7(A zjvoHF#GYC<*sr~bN%*+kz{c0Em-}=1+7g8^&14lWZ_i)+qb_$xVoq|#qV54t(b?-T zI7iG}U@mJYiGMlnqY_)KT|1rdcU;ows5@VQBH&q1R7Fvo#DyC-3KvR4eXVqUM`!j zmG1QF{3h4viiOKWq~?id--;kNFjOB_x1F;4e67BrA^y0Z0WO8`>y|&a@MzmQ2gaBG zVNpzLyNO9`5;{FM2Zayw8$OH_NiE4F;Q?DVUliPUU(pksVwet@Y3bChUxWGR%Oja{ zW7W{#6XiGOWx~xZ@wP=uiNwvPBT$}i^~6K#MSWyFTnT;yl+!olhx9R-pZ&S!M&*}>_sIL@pdo%eC`-jXS@W9tt*Uaw@~D*IX<1S zI>%T9V}o>V65LBtE>L2KDA>fgy}Ra!Qk=!*OM7$&fGX!u02}6 z(E!~YCAmf0TEXR-LP-4ujZptZ{Vj^zCm){!iws*f^*!6(2;~tBVfpWrTGp}?hr}eq z7fE$2NI2>`tV_YEt6S*xPXTc5Zvb@mBW7gLpJ>)UsmTn>k4~St@o$zDv(Q5w7K+B# zqjnTIdE9t#)Vdoj9EFr!((lu*-?6=5 zFK5)yK~&H`&4X?X(PWD^wqAnjzrOJOPPKtkGch!XI|xc~gd4^a!Dm@y-L6c?#5?T-3aIdk4C20*wdm_Jt`|HdI)vCC1R3e19-x zvXQ!2?(=jFLsQ} z!3t52NkiGHo_7IgxFsh?O-qeUsPxhaP6ob@8j?McX^?Y~NLA8Ll;OmfHR8 zpq>+*cv9&$Ya1;dnc}7Gru1poBpt-0TzJx37RVdFztS0S+Uj{W;f0Njts^5vH?Xw) z*q9;6uUD=!JLCJ8q$%VmnOG%8eQ(nJT1DAfU*ZX^^EQ9&w$JS%u-qh4OTApG z*@p$YK2=!gwoq{_X48K4<0ldSC^vS1L*_z*mk)@Vo1*fq7?5)z_C36bZ6OwaA_S|i zGXQP#VsAPfZ;)+ox)OI+I(Ys5K4y^L-sr;U{|k@fzBeKVMWg@OalN|;|GlKg z!UOd)2EK|=H~KXKSC`g#QZ)0wstZNk3M{3cvHwM)Dkp~uw}JOcOdI%JUwgk-STlM~ znz4}2_a**|X6TE{t}yr|y%x#@ROgot6#iIKS%M3D54WbjNxuYV)(lS2+xBM7HfRTJ zMrij%dpt}to#Z6knK0ACOqf6)Mn*=~-`|hUn)ls(RP<`5CsZd9^L#Dr0A#&cYG(%@ zbFGTD-E+#ns+6_t6FiPNf-nsD43 z3^%~{jRpyS9}E9J%gL3tS1LSN8VL@8cNsJaiS1M5x`A>D)mu#7@lH>VjdfJN?|Xv2 zKf~$7ZvU_?{$;bX+q&;&oP_srZ!v^q(oNv7)X~~rVMhMBfs0}y(eL}zWcZJFUPIs4 zwGd<(;N$Yxx)>OUc6=y`&K-7Heg1KW9xJ5Z98;$+hHBAGM^i^b4)l%Z*Ax>*Hx2hJ z-1p?7?9&?Qxew!wBIHd_AB3GQd?V2am6*glgd0ms#Wk#3j^lFu{rH{N!Wn9rfoA zpqHO~ttk!+$Jq-?v9aNc;seqlgfC%X)@=g+KD%r%Bv)E}#u2SW7aEy~ z2%cZ*IFVITXz&HFsr&!;3fTXIt$&xvo`|3Y&%S17b8c;IrQaMB2cbl2b~t|7+}awn zu-Nik^`>5NR!j~g`o_hcGe|$c2|hxCLPzpbK>gE>Y#oc@&CzRXZ}N9_bpyL5D1X6V zFlP-7yv)qZ*2@UnKjrSR3AJC_yszf!PDSq~*Z~uhlP`CV7F*nvrb-6e#=bo>ad`tx ztcYucbB@W+zZGk^G_3knMnKw9iP!-svz?dY>cgXyFDX#_7L zfpB()TDNY6-m}M)yu@M?;8}u%t!)XG?>*a$oQ1KAO>$4w%YNKJpvSK_1N)JMH zhgZtp=``BH<%(uaEcyzja?-^rybR^M+eQZb5Y4%B6k%o#tE=OEaGVNhWy)moCX(J- zO6A4)G;f?T>o~0-IS@fmxL}LFIr|{HTj9L*k_pBRkY#>6)}c2O=+w~E+%#%&J2`Oh zOHX3eF@Av&qa440bdDhGAJJj?PV`uM1vTfz4DJx}RMg8nQ)XNr8}g>tlztDJy(8!#?>zWRFc(c3`ivsz8DW5gh?s=N;L1L@20*H zOh|djgAT)?5CBM+m{5<3-Ik?o_B>c+`y@9u3Ow8&n<^Q5?bPtB3daMjfC5gc5r4=< zkvu+^w%miMW7WB507`QEC~5w^9bg(#0jwdUcDrM}Nc{p4adDFdPS}$^O&!%yevJr| z>bit>q_)kB6FW^|D+?21M2z&8fS^v{U{PsRfqS;!ItNrZEfuVVfVw0)ey*t759pbuV|bjOK&{Tk7F=w zk?M_`6|dDTnxp$Q%%tP_@fE+}aGeL^<(cuujCGd4ZzW!+h2XP7&TGK2^H&l{Qc$Gz zCubr}9zW~`{U3ALNE3s*YnY=UL+0~TU?sP*{-X8sT7XLJty5V)qu=J%Y@2XgMn-Q2 z_7Do!K7K>yK$3VXkAZec^mWcXZ9akw8q_JJBXW55<+9IpAR5PTz9}k=NvRAJ68lU-z?0USU?lTE-{V{&MCSKBqacFLa_Y8sB_j(T?a(`Y~ zTvB2-n9QC(C*-^l+UmTi1n3sB6ud4hKXo1O#ryW=y}mN;>jR|*1FAi9Ut3yb`-}+D zSIOV4Ll3F_sl>617DY5R3yC}k8p%D7ujh10K|A@w^o(e5Afi)L1Xry&AzEE>Gu>Q8 zjFSpo;dp0bWOnW=+nX_g6s3Mn_8;m$-K;hl?LWBEdSALAIfM3mT_M?T9kn>RV z2aL@hSgjrhF}YsyCXYrlx-}X_v2 z9U~a~`MkD5`lNl*z+h}%od3%F@zrKEt$`w|-PhuNjZ;?H9+j2m+RZx{T6nA!uPray zG#B^V;?IeMvJLSjk}JA`8NtJ)wahk@dvv($+3?q>*}e*D-6wml+NFjR#E~+LAS2ry zf&^dN#kuxE-QM0WyfH&_%PAU_mv2isu+oPijVu*9OYZaU9qaS7u#x*r+OYsk|X z;Bz8|hkk(@-db}qqsp87{l%7P2JY|e!zrY1FhXdDq=I|eI|S19 zI$NlwJ!{PlXVYp;c85ZHwectT=PL}xPx_WDy2#)S1S^U=AC^|YxyxpM}<-V?9Rp7!dV-|vBcg|N3oF0M^$gmVj2yv$b-`=Aq~g4mwC zV*Xs00QBckgCA4IVLZVTW9?~UQV6GFC6KJjRo#hZSE!9J`5|+a~I6Ojq{4}fuCoc2qXj?z{)L)sD82i zWgP8uArt0j7sTHZHx=I8;^PR(0UOJ>QJS?Iy&p zTo)cg0k%XF%70EgIQSP5&2I46+L#B%$>WFUR|t+@Ibt>99_QbMo?l6@LPuBm0e+}E z*^FC#GvkkJafO*j11|MagWf9;bfZUv$0M&CqKZ^B>Nb>s-mw(aX)rd2M=aI-SwWAV zYc`PhUMgPHxN!{dF%$F_SNx8?(ZF=jYNeZj>7M7juA6vDT8V(*(Q?->^5LY9TFtc| zgXd37e1VCwGt>?ZOJcsnzh}eohKqRM(*~rBn`G>UZ@^27{}0?AsM5< z0m70XhKnf8b<{%RowIGLdjmlr$HM-+h;zC6XMO)UKQ#wElZ7^?^yTYDU$3*kHOMi( zVipnFX8`z8X!EMd?~&kcaVwEZz79W+A~yb+t5wHdaO&?>zXj9)U#1GgdEUkgVSMjL z+S{<9EFp*WPb6n35p+}M`!y2t1dP7^%X-pI#Yop8F|m%CoWc3k-Z ze<#EPi%IyGuMbmfn$A9C=*wtjAx$3+xVRLoJ^&stWh>~b-l?(`+f*?z2OB@q3<_x$ z&rT_~L8y&UO4NyP8gfGgUZg!DwqJnUU)+4iEs+`sjL_+VvMGcGr22+Bvy?V2rs2B2 zcDzm*JAP@tg*dx%kOjKF6F(La&va?NTJ}5(yp51Rra3`ArC{d%wF+PMinxxqRzNq*#^jq_Xw;cqtOUb;pM$-AT-PSNh$8v z0{r3LmBWsaO_zB(&aL!;Mv!#veF6#Dm*{q6)Emp^=?$MHCTvkt2jYh&!7!q)p9q1Y zUq;?0igyi4unjU$dA&rbwHzi(Vi(^b!Id%(or{&bFGQFFOUEK$Nh)OoME3v|+aftU6k}=^BnW3nU;##}A9inV?=A%Xr=_i3Y~eLNKK_L& z+a;2-)1Cx89B@BHiZzS2vg}_kLAet2vlKjrqIi~5Y!Um@YR>dEn*m8>Wax*_*?_ao ziyma5mCp%A_iH50bjq79{5q-J}X8SedRX8A$ciU1+zt^cZG&roSz>Z+Kcy z5QcOk_j(Ajb}aGXUbnM%&48Rstyo4Zq(P%`J? z<|NN+@Lq+5;Wc{mEe$&%)x&B}k(t}k(nnSfj^z3-LSo_&LqusTkk}g%ONnX86l`Ic zS<10Be-aw9xn{&VSF{|eW+BuQcd5xjDxr4#ob^QjV~J4GkUM3g@uyis@ywZ!Bj>hn z6vPMq(Oxvq^7hB3Q78|_exWNmjZGnq>~O7%efN_rURMdq-E1@r;?w!{9zXmsB7nmH zOmXh!?tH@uO>^MWBXwz+UorDxB;HN8`EY2FQYEtk-NyO36OVW`wRr)NB_c zCg^#Vf}rJda0BH?(~?rin$_>13ozT+W4Mpp8k`TH$^L+eW$K8IGfHzxvf>^+ai z{R;&H*V$Dx3ybG?2Z5u@fFnvxWIJbRn5Tf=lA@Kk2dAVSilOaCAbmx8_*odxJrq(Z6nQ+LhB+bB?x%R1=_W%8P zuS17J_yOPBs9{FH`UrX2PjbzLsoY;YxzofpM;zeLY9u|pqu-jP+OU9ra>=1DX1mee zS2?5;C)Mm&3W{8qd3)W?;vC+1Lv_ZZhY{YA23Rq*XuT>tm>tkXw?5j-d2XO!5B@O^avMOjsu J3aNKr{sTkL*<=6! literal 9828 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 Ms;Hq*A!ioy9|~}0*#H0l literal 7080 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 M3hGbca^@lb0bcn}w*UYD From b41b1fc2f3c101e83176a7bab53a65b489b526bf Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 15 Jun 2013 04:09:49 -0700 Subject: [PATCH 12/13] Armalis simple_animal/sprite. --- baystation12.dme | 1 + code/datums/mind.dm | 4 ++ code/modules/client/preferences.dm | 4 -- code/modules/mob/living/simple_animal/vox.dm | 54 ++++++++++++++++++ code/modules/mob/new_player/new_player.dm | 6 +- code/modules/mob/say.dm | 2 +- .../projectiles/guns/projectile/bow.dm | 9 +++ icons/mob/vox.dmi | Bin 0 -> 4156 bytes 8 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/vox.dm create mode 100644 icons/mob/vox.dmi diff --git a/baystation12.dme b/baystation12.dme index 78f58149999..f002ef969d2 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1002,6 +1002,7 @@ #include "code\modules\mob\living\simple_animal\parrot.dm" #include "code\modules\mob\living\simple_animal\shade.dm" #include "code\modules\mob\living\simple_animal\simple_animal.dm" +#include "code\modules\mob\living\simple_animal\vox.dm" #include "code\modules\mob\living\simple_animal\worm.dm" #include "code\modules\mob\living\simple_animal\friendly\cat.dm" #include "code\modules\mob\living\simple_animal\friendly\corgi.dm" diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 175e622788a..4984b982839 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -1220,5 +1220,9 @@ datum/mind mind.assigned_role = "Juggernaut" mind.special_role = "Cultist" +/mob/living/simple_animal/vox/armalis/mind_initialize() + ..() + mind.assigned_role = "Armalis" + mind.special_role = "Vox Raider" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 75ead11e4c5..e6a76d88e8e 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -792,9 +792,6 @@ datum/preferences if(is_alien_whitelisted(user, "Skrell")) //Check for Skrell and admins new_species += "Skrell" whitelisted = 1 - if(is_alien_whitelisted(user, "Vox")) //Check for Vox and admins - new_species += "Vox" - whitelisted = 1 if(is_alien_whitelisted(user, "Kidan")) // Check for Kidan and admins new_species += "Kidan" whitelisted = 1 @@ -806,7 +803,6 @@ datum/preferences new_species += "Tajaran" new_species += "Unathi" new_species += "Skrell" - new_species += "Vox" new_species += "Kidan" species = input("Please select a species", "Character Generation", null) in new_species diff --git a/code/modules/mob/living/simple_animal/vox.dm b/code/modules/mob/living/simple_animal/vox.dm new file mode 100644 index 00000000000..e73249f2bc8 --- /dev/null +++ b/code/modules/mob/living/simple_animal/vox.dm @@ -0,0 +1,54 @@ +/mob/living/simple_animal/vox/armalis/ + + name = "serpentine alien" + real_name = "serpentine alien" + desc = "A one-eyed, serpentine creature, half-machine, easily nine feet from tail to beak!" + icon = 'icons/mob/vox.dmi' + icon_state = "armalis" + icon_living = "armalis" + maxHealth = 500 + health = 500 + response_harm = "flails ineffectually at the" + harm_intent_damage = 0 + melee_damage_lower = 30 + melee_damage_upper = 40 + attacktext = "slammed its enormous claws into" + speed = -1 + wall_smash = 1 + attack_sound = 'sound/weapons/bladeslice.ogg' + status_flags = 0 + +/mob/living/simple_animal/vox/armalis/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(O.force) + if(O.force >= 25) + var/damage = O.force + if (O.damtype == HALLOSS) + damage = 0 + health -= damage + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\red \b [src] has been attacked with the [O] by [user]. ") + else + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\red \b The [O] bounces harmlessly off of [src]. ") + else + usr << "\red This weapon is ineffective, it does no damage." + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\red [user] gently taps [src] with the [O]. ") + +/mob/living/simple_animal/vox/armalis/verb/fire_quill(mob/target as mob in oview()) + + set name = "Fire quill" + set desc = "Fires a viciously pointed quill at a high speed." + set category = "Alien" + + src << "\red You launch a razor-sharp quill at [target]!" + for(var/mob/O in oviewers()) + if ((O.client && !( O.blinded ))) + O << "\red [src] launches a razor-sharp quill at [target]!" + + var/obj/item/weapon/arrow/quill/Q = new(loc) + Q.fingerprintslast = src + Q.throw_at(target,10,15) \ No newline at end of file diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index f2859af519d..7f1dbc9f31a 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -349,12 +349,8 @@ if(is_alien_whitelisted(src, "Skrell"|| !config.usealienwhitelist)) new_character.dna.mutantrace = "skrell" new_character.skrell_talk_understand = 1 - if(client.prefs.species == "Vox") - if(is_alien_whitelisted(src, "Vox"|| !config.usealienwhitelist)) - new_character.dna.mutantrace = "vox" - new_character.vox_talk_understand = 1 if(client.prefs.species == "Kidan") - if(is_alien_whitelisted(src, "Vox"|| !config.usealienwhitelist)) + if(is_alien_whitelisted(src, "Kidan"|| !config.usealienwhitelist)) new_character.dna.mutantrace = "kidan" new_character.kidan_talk_understand = 1 diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index a0b765d8d43..2ed7f47a101 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -81,7 +81,7 @@ if (is_speaking_tajaran) return "mrowls, \"[text]\""; if (is_speaking_vox) - return "chirps, \"[text]\""; + return "shrieks, \"[text]\""; if (is_speaking_kidan) return "chitters, \"[text]\""; //Needs Virus2 diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm index 4c5c0c0b1c2..5981ae05c49 100644 --- a/code/modules/projectiles/guns/projectile/bow.dm +++ b/code/modules/projectiles/guns/projectile/bow.dm @@ -13,6 +13,15 @@ /obj/item/weapon/arrow/proc/removed() //Helper for metal rods falling apart.. return +/obj/item/weapon/arrow/quill + + name = "vox quill" + desc = "A wickedly barbed quill from some bizarre animal." + icon = 'icons/mob/vox.dmi' + icon_state = "quill" + item_state = "quill" + throwforce = 15 + /obj/item/weapon/arrow/rod name = "metal rod" diff --git a/icons/mob/vox.dmi b/icons/mob/vox.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6f0172bba7013eb7333b0debc4a8f8a1fe9a9e9b GIT binary patch literal 4156 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 Date: Sat, 15 Jun 2013 14:18:40 -0700 Subject: [PATCH 13/13] SHUT UP SPAMCAT. Bow fix, vox raider message fix. --- code/modules/admin/verbs/one_click_antag.dm | 2 +- code/modules/projectiles/guns/projectile/bow.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 099443ade48..8bb15c1cb3b 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -480,7 +480,7 @@ client/proc/one_click_antag() break new_vox.key = theghost.key - new_vox << "\blue You are a Vox Primalis, fresh out of the Shoal. Your crew has arrived at the NSV Exodus to begin pillaging! Your current goal is: \red [input]" + new_vox << "\blue You are a Vox Primalis, fresh out of the Shoal. Your ship has arrived at the Tau Ceti system hosting the NSV Exodus... or was it the Luna? NSS? Utopia? Nobody is really sure, but everyong is raring to start pillaging! Your current goal is: \red [input]" new_vox << "\red Don't forget to turn on your nitrogen internals!" raiders-- diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm index 5981ae05c49..6a8c3510f8e 100644 --- a/code/modules/projectiles/guns/projectile/bow.dm +++ b/code/modules/projectiles/guns/projectile/bow.dm @@ -77,7 +77,7 @@ user << "[arrow] plinks and crackles as it begins to glow red-hot." arrow.throwforce = 20 arrow.icon_state = "metal-rod-superheated" - + cell.charge -= 500 return if(istype(W, /obj/item/weapon/cell))