From 5ffa0e639758584541b7ed1eb18a72931baf7b18 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Mon, 16 Feb 2015 19:53:12 +0100 Subject: [PATCH 01/10] fixes curbstomp, adjusts texts --- .../living/carbon/human/human_attackhand.dm | 1 + .../mob/living/carbon/human/unarmed_attack.dm | 31 +++++++++++-------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index bb02aee5e0b..5029c283ecd 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -116,6 +116,7 @@ if(src.grabbed_by.len || src.buckled || !src.canmove || src==H) accurate = 1 // certain circumstances make it impossible for us to evade punches + rand_damage = 5 // Process evasion and blocking var/miss_type = 0 diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index c98e3788c00..d033e70610d 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -64,7 +64,7 @@ target.apply_effects(stutter = attack_damage * 2, agony = attack_damage* 3, blocked = armour) if("l_leg", "l_foot", "r_leg", "r_foot") if(!target.lying) - target.visible_message("[src] gives way slightly.") + target.visible_message("[target] gives way slightly.") target.apply_effect(attack_damage*3, AGONY, armour) else if(attack_damage >= 5 && !(target == user) && (stun_chance + attack_damage * 5 >= 100) && armour < 2) // Chance to get the usual throwdown as well (25% standard chance) if(!target.lying) @@ -118,22 +118,28 @@ user.visible_message("[user] slapped [target] across \his cheek!") if(3 to 4) user.visible_message(pick( - 80; "[user] [pick(attack_verb)] [target] in the head!", //striking someone with a 'closed fist' is called punching them. - 20; "[user] struck [target] in the head[pick("", " with a closed fist")]!" + 40; "[user] [pick(attack_verb)] [target] in the head!", + 30; "[user] struck [target] in the head[pick("", " with a closed fist")]!", + 30; "[user] threw a hook against [target]'s head!" )) if(5) user.visible_message(pick( - 10; "[user] gave [target] a resounding slap to the face!", - 90; "[user] smashed \his [pick(attack_noun)] into [target]'s [organ]!" + 30; "[user] gave [target] a resounding [pick("slap", "punch")] to the face!", + 40; "[user] smashed \his [pick(attack_noun)] into [target]'s face!", + 30; "[user] gave a strong blow against [target]'s jaw!" )) else // ----- BODY ----- // switch(attack_damage) - if(1 to 2) user.visible_message("[user] slapped [target]'s [organ]!") - if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in \his [organ]!") - if(5) user.visible_message("[user] smashed \his [pick(attack_noun)] into [target]'s [organ]!") + if(1 to 2) user.visible_message("[user] threw a glancing punch at [target]'s [organ]!") + if(1 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in \his [organ]!") + if(5) + user.visible_message(pick( + 50; "[user] smashed \his [pick(attack_noun)] into [target]'s [organ]!", + 50; "[user] landed a striking [pick(attack_noun)] on [target]'s [organ]!" + )) else - user.visible_message("[user] [pick("punched", "threw a punch", "struck", "slapped", "slammed their [pick(attack_noun)] into")] [target]'s [organ]!") //why do we have a separate set of verbs for lying targets? + user.visible_message("[user] [pick("punched", "threw a punch against", "struck", "slammed their [pick(attack_noun)] into")] [target]'s [organ]!") //why do we have a separate set of verbs for lying targets? /datum/unarmed_attack/kick attack_verb = list("kicked", "kicked", "kicked", "kneed") @@ -177,7 +183,7 @@ /datum/unarmed_attack/stomp attack_verb = null - attack_noun = list("kick") + attack_noun = list("stomp") attack_sound = "swing_hit" damage = 0 @@ -189,7 +195,7 @@ if(!istype(target)) return 0 - if (!user.lying && (target.lying || zone in list("l_foot", "r_foot"))) + if (!user.lying && (target.lying || (zone in list("l_foot", "r_foot")))) if(target.grabbed_by == user && target.lying) return 0 var/datum/organ/external/E = user.organs_by_name["l_foot"] @@ -214,6 +220,5 @@ attack_damage = Clamp(attack_damage, 1, 5) switch(attack_damage) - if(1 to 2) user.visible_message("[user] [pick("stepped on", "treaded on")] [target]'s [organ]!") //stepped on conveys the same meaning and is more recognizable as an actual word than "clomped" - if(3 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!") + if(1 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!") if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/ \ No newline at end of file From 27ee550ddbeb3fba9774c1e3593743e1ca458c73 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 17 Feb 2015 01:43:03 -0500 Subject: [PATCH 02/10] Fixes #7870 --- icons/mob/robots.dmi | Bin 155561 -> 155583 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index f83d75f3f6430d8b2909e075e4d7ef524b3ce659..777f68c62e6f10f6b587c24c9e7a02387ff3aa06 100644 GIT binary patch delta 10728 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 delta 10706 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 TyTjK506 Date: Wed, 18 Feb 2015 15:09:40 -0500 Subject: [PATCH 03/10] Defines icon file for purple comb Fixes #8133 --- code/game/objects/items/weapons/cosmetics.dm | 1 + html/changelog.html | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index 6241bd50518..437daa86bbd 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -71,6 +71,7 @@ name = "purple comb" desc = "A pristine purple comb made from flexible plastic." w_class = 1.0 + icon = 'icons/obj/items.dmi' icon_state = "purplecomb" item_state = "purplecomb" diff --git a/html/changelog.html b/html/changelog.html index b534169136d..17cacc5bb54 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,15 @@ should be listed in the changelog upon commit though. Thanks. --> +
+

18 February 2015

+

TwistedAkai updated:

+
    +
  • Purple Combs should now be visible and have their proper icon
  • +
+
+ +

1 September 2015

updated:

From cfa8bf1e975b9a0b8f48149a579511f94e840132 Mon Sep 17 00:00:00 2001 From: Akai Alonkai Date: Wed, 18 Feb 2015 15:24:33 -0500 Subject: [PATCH 04/10] Probable typo fix September hasn't passed yet, but 1/9 could also be January 9th. --- html/changelog.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 17cacc5bb54..69f8fc08093 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -66,8 +66,8 @@ should be listed in the changelog upon commit though. Thanks. -->
-

1 September 2015

-

updated:

+

9 January 2015

+

Zuhayr updated:

  • Voice changers no longer use ID cards. They have Toggle and Set Voice verbs on the actual mask object now.
From 6b6fcf81f25979da4c3257eabc5dbc5942be47ba Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 18 Feb 2015 23:55:21 -0500 Subject: [PATCH 05/10] Fixes #8075 --- code/modules/mob/inventory.dm | 12 ++--------- .../mob/living/carbon/human/update_icons.dm | 13 +++--------- code/modules/organs/organ_external.dm | 20 +++++++++---------- 3 files changed, 15 insertions(+), 30 deletions(-) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 711b0594a1f..653e33b2ddf 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -208,6 +208,7 @@ return 1 //Attemps to remove an object on a mob. Will not move it to another area or such, just removes from the mob. +//It does call u_equip() though. So it can drop items to the floor but only if src is human. /mob/proc/remove_from_mob(var/obj/O) src.u_equip(O) if (src.client) @@ -242,16 +243,7 @@ /** BS12's proc to get the item in the active hand. Couldn't find the /tg/ equivalent. **/ /mob/proc/equipped() - if(issilicon(src)) - if(isrobot(src)) - if(src:module_active) - return src:module_active - else - if (hand) - return l_hand - else - return r_hand - return + return get_active_hand() //TODO: get rid of this proc /mob/living/carbon/human/proc/equip_if_possible(obj/item/W, slot, del_on_fail = 1) // since byond doesn't seem to have pointers, this seems like the best way to do this :/ //warning: icky code diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index cc053f219d5..0bdcf6d4275 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -545,16 +545,9 @@ proc/get_damage_icon_part(damage_state, body_part) overlays_standing[UNIFORM_LAYER] = null // This really, really seems like it should not be mixed in the middle of display code... // Automatically drop anything in store / id / belt if you're not wearing a uniform. //CHECK IF NECESARRY - for( var/obj/item/thing in list(r_store, l_store, wear_id, belt) ) // - if(thing) // - u_equip(thing) // - if (client) // - client.screen -= thing // - // - if (thing) // - thing.loc = loc // - thing.dropped(src) // - thing.layer = initial(thing.layer) + for( var/obj/item/thing in list(r_store, l_store, wear_id, belt) ) + if(thing) + remove_from_mob(thing) if(update_icons) update_icons() /mob/living/carbon/human/update_inv_wear_id(var/update_icons=1) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index b45d0aafa76..a49ff2c408c 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -596,14 +596,11 @@ Note that amputating the affected organ does in fact remove the infection from t update_damages() var/obj/organ //Dropped limb object + var/list/dropped_items switch(body_part) if(HEAD) - organ= new /obj/item/weapon/organ/head(owner.loc, owner) - owner.u_equip(owner.glasses) - owner.u_equip(owner.head) - owner.u_equip(owner.l_ear) - owner.u_equip(owner.r_ear) - owner.u_equip(owner.wear_mask) + organ = new /obj/item/weapon/organ/head(owner.loc, owner) + dropped_items = list(owner.glasses, owner.head, owner.l_ear, owner.r_ear, owner.wear_mask) if(ARM_RIGHT) if(status & ORGAN_ROBOT) organ = new /obj/item/robot_parts/r_arm(owner.loc) @@ -627,19 +624,22 @@ Note that amputating the affected organ does in fact remove the infection from t if(HAND_RIGHT) if(!(status & ORGAN_ROBOT)) organ= new /obj/item/weapon/organ/r_hand(owner.loc, owner) - owner.u_equip(owner.gloves) + dropped_items = list(owner.gloves) //should probably make it so that you can still wear gloves if you have one hand if(HAND_LEFT) if(!(status & ORGAN_ROBOT)) organ= new /obj/item/weapon/organ/l_hand(owner.loc, owner) - owner.u_equip(owner.gloves) + dropped_items = list(owner.gloves) if(FOOT_RIGHT) if(!(status & ORGAN_ROBOT)) organ= new /obj/item/weapon/organ/r_foot/(owner.loc, owner) - owner.u_equip(owner.shoes) + dropped_items = list(owner.shoes) if(FOOT_LEFT) if(!(status & ORGAN_ROBOT)) organ = new /obj/item/weapon/organ/l_foot(owner.loc, owner) - owner.u_equip(owner.shoes) + dropped_items = list(owner.shoes) + if(dropped_items) + for(var/obj/O in dropped_items) + owner.remove_from_mob(O) destspawn = 1 //Robotic limbs explode if sabotaged. From 82480ac1a78405cb6efb8ba4cbbffcbe975ed8c4 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 19 Feb 2015 00:09:18 -0500 Subject: [PATCH 06/10] Minor cleanup --- code/modules/mob/living/carbon/human/inventory.dm | 8 +------- code/modules/mob/mob.dm | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 0a504ca1486..7846a1ac260 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -753,13 +753,7 @@ It can still be worn/put on as normal. if(slot_to_process) if(strip_item) //Stripping an item from the mob var/obj/item/W = strip_item - target.u_equip(W) - if (target.client) - target.client.screen -= W - if (W) - W.loc = target.loc - W.layer = initial(W.layer) - W.dropped(target) + target.remove_from_mob(W) W.add_fingerprint(source) if(slot_to_process == slot_l_store) //pockets! Needs to process the other one too. Snowflake code, wooo! It's not like anyone will rewrite this anytime soon. If I'm wrong then... CONGRATULATIONS! ;) if(target.r_store) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 82a53840019..a93b000e0da 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -183,7 +183,7 @@ var/list/slot_equipment_priority = list( \ if(!istype(W)) return 0 for(var/slot in slot_equipment_priority) - if(equip_to_slot_if_possible(W, slot, 0, 1, 1)) //del_on_fail = 0; disable_warning = 0; redraw_mob = 1 + if(equip_to_slot_if_possible(W, slot, del_on_fail=0, disable_warning=1, redraw_mob=1)) return 1 return 0 From 01784d8d6ac93e90bc41928e03a57553c8ebbc0e Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 19 Feb 2015 00:20:38 -0500 Subject: [PATCH 07/10] Fixes cigar/pipe mob overlays not updating when lit --- code/game/objects/items/weapons/cigs_lighters.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index fb51d83c14d..21c65905e47 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -119,7 +119,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.update_inv_wear_mask(0) user.update_inv_l_hand(0) user.update_inv_r_hand(1) - return /obj/item/clothing/mask/cigarette/afterattack(obj/item/weapon/reagent_containers/glass/glass, mob/user as mob, proximity) @@ -284,6 +283,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM else if(istype(W, /obj/item/device/assembly/igniter)) light("[user] fiddles with [W], and manages to light their [name] with the power of science.") + user.update_inv_wear_mask(0) + user.update_inv_l_hand(0) + user.update_inv_r_hand(1) + ///////////////// //SMOKING PIPES// ///////////////// @@ -361,6 +364,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM else if(istype(W, /obj/item/device/assembly/igniter)) light("[user] fiddles with [W], and manages to light their [name] with the power of science.") + user.update_inv_wear_mask(0) + user.update_inv_l_hand(0) + user.update_inv_r_hand(1) + /obj/item/clothing/mask/cigarette/pipe/cobpipe name = "corn cob pipe" desc = "A nicotine delivery system popularized by folksy backwoodsmen, kept popular in the modern age and beyond by space hipsters." From 12585172024435fe3673c74405764f524b3c54b9 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 19 Feb 2015 01:02:32 -0500 Subject: [PATCH 08/10] Fixes hiding mobs being layered underneath vents --- code/modules/mob/living/living_powers.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/living_powers.dm b/code/modules/mob/living/living_powers.dm index da94c1abdef..b4310d77b5e 100644 --- a/code/modules/mob/living/living_powers.dm +++ b/code/modules/mob/living/living_powers.dm @@ -16,8 +16,8 @@ if(stat == DEAD || paralysis || weakened || stunned || restrained()) return - if (layer != TURF_LAYER+0.2) - layer = TURF_LAYER+0.2 + if (layer != 2.45) + layer = 2.45 //Just above cables with their 2.44 src << text("\blue You are now hiding.") else layer = MOB_LAYER From 675b277d16a588529947bda8468fbaf5d86f2956 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 19 Feb 2015 10:43:10 +0100 Subject: [PATCH 09/10] NanoUIs based on embedded controllers should no longer wander across the screen. calling updateDialog() forces a NanoUI window to re-openi, which is a bit of a pain when done in process(). --- .../machinery/embedded_controller/embedded_controller_base.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 84fa4192657..8661651a396 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -24,7 +24,6 @@ program.process() update_icon() - src.updateDialog() /obj/machinery/embedded_controller/attack_ai(mob/user as mob) src.ui_interact(user) From 32b543c4e439cb88499f5be2e3c239bcef795151 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 19 Feb 2015 22:51:10 -0500 Subject: [PATCH 10/10] Firedoors and blast doors no longer block zones Firedoors no longer block zones, fixes #8169 Blast doors no longer block zones as well, which fixes some of the awkward zone geometry seen in #4798 --- code/game/machinery/doors/blast_door.dm | 7 +++++++ code/game/machinery/doors/door.dm | 3 ++- code/game/machinery/doors/firedoor.dm | 6 +++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index e456e136a8d..07192d5dc6e 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -24,6 +24,10 @@ dir = 1 explosion_resistance = 25 emitter_resistance = 50 // Lots of emitter blasts, it's *blast* door after all. + + //Most blast doors are infrequently toggled and sometimes used with regular doors anyways, + //turning this off prevents awkward zone geometry in places like medbay lobby, for example. + block_air_zones = 0 // Proc: Bumped() // Parameters: 1 (AM - Atom that tried to walk through this object) @@ -157,6 +161,9 @@ stat &= ~BROKEN +/obj/machinery/door/blast/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if(air_group) return 1 + return ..() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 8e354a73b33..c6f4b5803df 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -32,6 +32,7 @@ var/min_force = 10 //minimum amount of force needed to damage the door with a melee weapon var/hitsound = 'sound/weapons/smash.ogg' //sound door makes when hit with a weapon var/obj/item/stack/sheet/metal/repairing + var/block_air_zones = 1 //If set, air zones cannot merge across the door even when it is opened. //Multi-tile doors dir = EAST @@ -115,7 +116,7 @@ /obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) return 0 + if(air_group) return !block_air_zones if(istype(mover) && mover.checkpass(PASSGLASS)) return !opacity return !density diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 55b392feff6..8799273b930 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -22,6 +22,10 @@ open_layer = DOOR_OPEN_LAYER - 0.01 // Just below doors when open closed_layer = DOOR_CLOSED_LAYER + 0.01 // Just above doors when closed + //These are frequenly used with windows, so make sure zones can pass. + //Generally if a firedoor is at a place where there should be a zone boundery then there will be a regular door underneath it. + block_air_zones = 0 + var/blocked = 0 var/lockdown = 0 // When the door has detected a problem, it locks. var/pdiff_alert = 0 @@ -381,9 +385,9 @@ overlays += "welded_open" return +//These are playing merry hell on ZAS. Sorry fellas :( /obj/machinery/door/firedoor/border_only -//These are playing merry hell on ZAS. Sorry fellas :( /* icon = 'icons/obj/doors/edge_Doorfire.dmi' glass = 1 //There is a glass window so you can see through the door