mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-21 12:02:31 +01:00
Christ on a stick. SO MANY ERRORS. REEE. # Conflicts: # baystation12.dme # code/_helpers/lists.dm # code/_helpers/logging.dm # code/_helpers/text.dm # code/_onclick/click.dm # code/controllers/configuration.dm # code/controllers/master_controller.dm # code/datums/supplypacks.dm # code/game/antagonist/antagonist.dm # code/game/antagonist/antagonist_print.dm # code/game/antagonist/outsider/commando.dm # code/game/antagonist/outsider/ninja.dm # code/game/area/areas.dm # code/game/gamemodes/cult/cult_items.dm # code/game/gamemodes/game_mode.dm # code/game/jobs/access.dm # code/game/machinery/atmoalter/canister.dm # code/game/machinery/autolathe.dm # code/game/machinery/doors/airlock.dm # code/game/machinery/recharger.dm # code/game/machinery/suit_storage_unit.dm # code/game/mecha/mech_fabricator.dm # code/game/mecha/mecha.dm # code/game/objects/effects/spiders.dm # code/game/objects/items.dm # code/game/objects/items/devices/PDA/PDA.dm # code/game/objects/items/devices/flash.dm # code/game/objects/items/devices/lightreplacer.dm # code/game/objects/items/devices/paicard.dm # code/game/objects/items/devices/scanners.dm # code/game/objects/items/devices/suit_cooling.dm # code/game/objects/items/devices/uplink.dm # code/game/objects/items/robot/robot_upgrades.dm # code/game/objects/items/toys.dm # code/game/objects/items/weapons/cards_ids.dm # code/game/objects/items/weapons/handcuffs.dm # code/game/objects/items/weapons/manuals.dm # code/game/objects/items/weapons/material/kitchen.dm # code/game/objects/items/weapons/material/misc.dm # code/game/objects/items/weapons/material/swords.dm # code/game/objects/items/weapons/melee/energy.dm # code/game/objects/items/weapons/melee/misc.dm # code/game/objects/items/weapons/scrolls.dm # code/game/objects/items/weapons/storage/belt.dm # code/game/objects/items/weapons/stunbaton.dm # code/game/objects/items/weapons/tools.dm # code/game/objects/objs.dm # code/game/objects/structures/crates_lockers/closets.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/game/objects/structures/janicart.dm # code/game/sound.dm # code/game/turfs/simulated.dm # code/game/verbs/ooc.dm # code/global.dm # code/modules/admin/verbs/debug.dm # code/modules/admin/verbs/modifyvariables.dm # code/modules/client/client procs.dm # code/modules/client/preferences.dm # code/modules/clothing/clothing.dm # code/modules/clothing/head/hardhat.dm # code/modules/clothing/head/helmet.dm # code/modules/clothing/head/jobs.dm # code/modules/clothing/head/misc_special.dm # code/modules/clothing/shoes/jobs.dm # code/modules/clothing/spacesuits/alien.dm # code/modules/clothing/spacesuits/captain.dm # code/modules/clothing/spacesuits/miscellaneous.dm # code/modules/clothing/spacesuits/rig/rig_pieces.dm # code/modules/clothing/spacesuits/rig/suits/alien.dm # code/modules/clothing/spacesuits/spacesuits.dm # code/modules/clothing/spacesuits/void/merc.dm # code/modules/clothing/spacesuits/void/void.dm # code/modules/clothing/suits/armor.dm # code/modules/clothing/suits/jobs.dm # code/modules/clothing/suits/storage.dm # code/modules/clothing/suits/utility.dm # code/modules/clothing/suits/wiz_robe.dm # code/modules/clothing/under/jobs/security.dm # code/modules/economy/Events.dm # code/modules/economy/Events_Mundane.dm # code/modules/economy/economy_misc.dm # code/modules/events/blob.dm # code/modules/events/event.dm # code/modules/events/event_container.dm # code/modules/events/event_manager.dm # code/modules/events/money_lotto.dm # code/modules/events/prison_break.dm # code/modules/events/spacevine.dm # code/modules/hydroponics/trays/tray.dm # code/modules/mob/dead/observer/observer.dm # code/modules/mob/emote.dm # code/modules/mob/holder.dm # code/modules/mob/language/station.dm # code/modules/mob/living/bot/cleanbot.dm # code/modules/mob/living/carbon/alien/diona/diona.dm # code/modules/mob/living/carbon/alien/diona/diona_attacks.dm # code/modules/mob/living/carbon/give.dm # code/modules/mob/living/carbon/human/emote.dm # code/modules/mob/living/carbon/human/human.dm # code/modules/mob/living/carbon/human/human_defense.dm # code/modules/mob/living/carbon/human/inventory.dm # code/modules/mob/living/carbon/human/life.dm # code/modules/mob/living/carbon/human/species/outsider/vox.dm # code/modules/mob/living/carbon/human/species/station/golem.dm # code/modules/mob/living/carbon/human/species/station/station.dm # code/modules/mob/living/carbon/human/update_icons.dm # code/modules/mob/living/carbon/metroid/metroid.dm # code/modules/mob/living/living.dm # code/modules/mob/living/living_defense.dm # code/modules/mob/living/living_defines.dm # code/modules/mob/living/silicon/ai/ai.dm # code/modules/mob/living/silicon/pai/admin.dm # code/modules/mob/living/silicon/pai/pai.dm # code/modules/mob/living/silicon/robot/drone/drone.dm # code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm # code/modules/mob/living/silicon/robot/emote.dm # code/modules/mob/living/silicon/robot/robot_items.dm # code/modules/mob/living/silicon/robot/robot_modules.dm # code/modules/mob/living/silicon/silicon.dm # code/modules/mob/living/simple_animal/bees.dm # code/modules/mob/living/simple_animal/friendly/cat.dm # code/modules/mob/living/simple_animal/friendly/corgi.dm # code/modules/mob/living/simple_animal/friendly/farm_animals.dm # code/modules/mob/living/simple_animal/friendly/mouse.dm # code/modules/mob/living/simple_animal/friendly/spiderbot.dm # code/modules/mob/living/simple_animal/hostile/hostile.dm # code/modules/mob/living/simple_animal/simple_animal.dm # code/modules/mob/logout.dm # code/modules/mob/mob.dm # code/modules/mob/mob_grab_specials.dm # code/modules/mob/mob_helpers.dm # code/modules/mob/new_player/sprite_accessories.dm # code/modules/organs/organ.dm # code/modules/organs/organ_alien.dm # code/modules/organs/organ_external.dm # code/modules/paperwork/faxmachine.dm # code/modules/projectiles/ammunition/boxes.dm # code/modules/projectiles/ammunition/bullets.dm # code/modules/projectiles/guns/energy/nuclear.dm # code/modules/projectiles/guns/energy/rifle.dm # code/modules/projectiles/guns/energy/special.dm # code/modules/projectiles/guns/projectile.dm # code/modules/projectiles/guns/projectile/automatic.dm # code/modules/projectiles/guns/projectile/pistol.dm # code/modules/projectiles/guns/projectile/revolver.dm # code/modules/projectiles/guns/projectile/shotgun.dm # code/modules/projectiles/projectile/bullets.dm # code/modules/projectiles/projectile/special.dm # code/modules/reagents/reagent_containers.dm # code/modules/reagents/reagent_containers/food/drinks.dm # code/modules/research/designs.dm # code/modules/research/destructive_analyzer.dm # code/modules/research/rdconsole.dm # code/modules/spells/artifacts.dm # code/modules/spells/spellbook.dm # code/modules/tables/tables.dm # code/world.dm # config/example/config.txt # icons/mob/items_lefthand.dmi # icons/mob/items_righthand.dmi # icons/obj/lighting.dmi
150 lines
6.2 KiB
Plaintext
150 lines
6.2 KiB
Plaintext
|
|
/obj/item/weapon/grab/proc/inspect_organ(mob/living/carbon/human/H, mob/user, var/target_zone)
|
|
|
|
var/obj/item/organ/external/E = H.get_organ(target_zone)
|
|
|
|
if(!E || E.is_stump())
|
|
user << "<span class='notice'>[H] is missing that bodypart.</span>"
|
|
return
|
|
|
|
user.visible_message("<span class='notice'>[user] starts inspecting [affecting]'s [E.name] carefully.</span>")
|
|
if(!do_mob(user,H, 10))
|
|
user << "<span class='notice'>You must stand still to inspect [E] for wounds.</span>"
|
|
else if(E.wounds.len)
|
|
user << "<span class='warning'>You find [E.get_wounds_desc()]</span>"
|
|
else
|
|
user << "<span class='notice'>You find no visible wounds.</span>"
|
|
|
|
user << "<span class='notice'>Checking bones now...</span>"
|
|
if(!do_mob(user, H, 20))
|
|
user << "<span class='notice'>You must stand still to feel [E] for fractures.</span>"
|
|
else if(E.status & ORGAN_BROKEN)
|
|
user << "<span class='warning'>The [E.encased ? E.encased : "bone in the [E.name]"] moves slightly when you poke it!</span>"
|
|
H.custom_pain("Your [E.name] hurts where it's poked.")
|
|
else
|
|
user << "<span class='notice'>The [E.encased ? E.encased : "bones in the [E.name]"] seem to be fine.</span>"
|
|
|
|
user << "<span class='notice'>Checking skin now...</span>"
|
|
if(!do_mob(user, H, 10))
|
|
user << "<span class='notice'>You must stand still to check [H]'s skin for abnormalities.</span>"
|
|
else
|
|
var/bad = 0
|
|
if(H.getToxLoss() >= 40)
|
|
user << "<span class='warning'>[H] has an unhealthy skin discoloration.</span>"
|
|
bad = 1
|
|
if(H.getOxyLoss() >= 20)
|
|
user << "<span class='warning'>[H]'s skin is unusaly pale.</span>"
|
|
bad = 1
|
|
if(E.status & ORGAN_DEAD)
|
|
user << "<span class='warning'>[E] is decaying!</span>"
|
|
bad = 1
|
|
if(!bad)
|
|
user << "<span class='notice'>[H]'s skin is normal.</span>"
|
|
|
|
/obj/item/weapon/grab/proc/jointlock(mob/living/carbon/human/target, mob/attacker, var/target_zone)
|
|
if(state < GRAB_AGGRESSIVE)
|
|
attacker << "<span class='warning'>You require a better grab to do this.</span>"
|
|
return
|
|
|
|
var/obj/item/organ/external/organ = target.get_organ(check_zone(target_zone))
|
|
if(!organ || organ.dislocated == -1)
|
|
return
|
|
|
|
attacker.visible_message("<span class='danger'>[attacker] [pick("bent", "twisted")] [target]'s [organ.name] into a jointlock!</span>")
|
|
var/armor = target.run_armor_check(target, "melee")
|
|
if(armor < 2)
|
|
target << "<span class='danger'>You feel extreme pain!</span>"
|
|
affecting.adjustHalLoss(Clamp(0, 60-affecting.halloss, 30)) //up to 60 halloss
|
|
|
|
/obj/item/weapon/grab/proc/attack_eye(mob/living/carbon/human/target, mob/living/carbon/human/attacker)
|
|
if(!istype(attacker))
|
|
return
|
|
|
|
var/datum/unarmed_attack/attack = attacker.get_unarmed_attack(target, "eyes")
|
|
|
|
if(!attack)
|
|
return
|
|
if(state < GRAB_NECK)
|
|
attacker << "<span class='warning'>You require a better grab to do this.</span>"
|
|
return
|
|
for(var/obj/item/protection in list(target.head, target.wear_mask, target.glasses))
|
|
if(protection && (protection.body_parts_covered & EYES))
|
|
attacker << "<span class='danger'>You're going to need to remove the eye covering first.</span>"
|
|
return
|
|
if(!target.has_eyes())
|
|
attacker << "<span class='danger'>You cannot locate any eyes on [target]!</span>"
|
|
return
|
|
|
|
attacker.attack_log += text("\[[time_stamp()]\] <font color='red'>Attacked [target.name]'s eyes using grab ([target.ckey])</font>")
|
|
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Had eyes attacked by [attacker.name]'s grab ([attacker.ckey])</font>")
|
|
msg_admin_attack("[key_name(attacker)] attacked [key_name(target)]'s eyes using a grab action.")
|
|
|
|
attack.handle_eye_attack(attacker, target)
|
|
|
|
/obj/item/weapon/grab/proc/headbut(mob/living/carbon/human/target, mob/living/carbon/human/attacker)
|
|
if(!istype(attacker))
|
|
return
|
|
if(target.lying)
|
|
return
|
|
attacker.visible_message("<span class='danger'>[attacker] thrusts \his head into [target]'s skull!</span>")
|
|
|
|
var/damage = 20
|
|
var/obj/item/clothing/hat = attacker.head
|
|
if(istype(hat))
|
|
damage += hat.force * 3
|
|
|
|
var/armor = target.run_armor_check("head", "melee")
|
|
target.apply_damage(damage, BRUTE, "head", armor)
|
|
attacker.apply_damage(10, BRUTE, "head", attacker.run_armor_check("head", "melee"))
|
|
|
|
if(!armor && target.headcheck("head") && prob(damage))
|
|
target.apply_effect(20, PARALYZE)
|
|
target.visible_message("<span class='danger'>[target] [target.species.knockout_message]</span>")
|
|
|
|
playsound(attacker.loc, "swing_hit", 25, 1, -1)
|
|
attacker.attack_log += text("\[[time_stamp()]\] <font color='red'>Headbutted [target.name] ([target.ckey])</font>")
|
|
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Headbutted by [attacker.name] ([attacker.ckey])</font>")
|
|
msg_admin_attack("[key_name(attacker)] has headbutted [key_name(target)]")
|
|
|
|
attacker.drop_from_inventory(src)
|
|
src.loc = null
|
|
qdel(src)
|
|
return
|
|
|
|
/obj/item/weapon/grab/proc/dislocate(mob/living/carbon/human/target, mob/living/attacker, var/target_zone)
|
|
if(state < GRAB_NECK)
|
|
attacker << "<span class='warning'>You require a better grab to do this.</span>"
|
|
return
|
|
if(target.grab_joint(attacker, target_zone))
|
|
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
|
return
|
|
|
|
/obj/item/weapon/grab/proc/pin_down(mob/target, mob/attacker)
|
|
if(state < GRAB_AGGRESSIVE)
|
|
attacker << "<span class='warning'>You require a better grab to do this.</span>"
|
|
return
|
|
if(force_down)
|
|
attacker << "<span class='warning'>You are already pinning [target] to the ground.</span>"
|
|
|
|
attacker.visible_message("<span class='danger'>[attacker] starts forcing [target] to the ground!</span>")
|
|
if(do_after(attacker, 20) && target)
|
|
last_action = world.time
|
|
attacker.visible_message("<span class='danger'>[attacker] forces [target] to the ground!</span>")
|
|
apply_pinning(target, attacker)
|
|
|
|
/obj/item/weapon/grab/proc/apply_pinning(mob/target, mob/attacker)
|
|
force_down = 1
|
|
target.Weaken(3)
|
|
target.lying = 1
|
|
step_to(attacker, target)
|
|
attacker.set_dir(EAST) //face the victim
|
|
target.set_dir(SOUTH) //face up
|
|
|
|
/obj/item/weapon/grab/proc/devour(mob/target, mob/user)
|
|
var/mob/living/carbon/human/H = user
|
|
var/can_eat
|
|
if(istype(H) && H.species.gluttonous)
|
|
can_eat = 1
|
|
|
|
if(can_eat)
|
|
H.attempt_devour(target, H.eat_types, H.mouth_size) |