From bc6b967fb25ade37901814164cc72267b38d3f7e Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Fri, 7 Jun 2019 18:34:30 -0400
Subject: [PATCH] Update paperplane.dm
---
code/modules/paperwork/paperplane.dm | 41 ++++++++++++++++++++++------
1 file changed, 33 insertions(+), 8 deletions(-)
diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm
index 73eadfbc45..9f7e401643 100644
--- a/code/modules/paperwork/paperplane.dm
+++ b/code/modules/paperwork/paperplane.dm
@@ -1,3 +1,4 @@
+
/obj/item/paperplane
name = "paper plane"
desc = "Paper, folded in the shape of a plane."
@@ -10,8 +11,14 @@
resistance_flags = FLAMMABLE
max_integrity = 50
+ var/hit_probability = 2//%
var/obj/item/paper/internalPaper
+/obj/item/paperplane/origami
+ desc = "Paper, masterfully folded in the shape of a plane."
+ throwforce = 20 //same as throwing stars, but no chance of embedding.
+ hit_probability = 100 //guaranteed to cause eye damage when it hits a mob.
+
/obj/item/paperplane/Initialize(mapload, obj/item/paper/newPaper)
. = ..()
pixel_y = rand(-8, 8)
@@ -22,13 +29,18 @@
color = newPaper.color
newPaper.forceMove(src)
else
- internalPaper = new /obj/item/paper(src)
+ internalPaper = new(src)
update_icon()
-/obj/item/paperplane/Destroy()
- if(internalPaper)
- qdel(internalPaper)
+/obj/item/paperplane/handle_atom_del(atom/A)
+ if(A == internalPaper)
internalPaper = null
+ if(!QDELETED(src))
+ qdel(src)
+ return ..()
+
+/obj/item/paperplane/Destroy()
+ QDEL_NULL(internalPaper)
return ..()
/obj/item/paperplane/suicide_act(mob/living/user)
@@ -48,7 +60,7 @@
/obj/item/paperplane/attack_self(mob/user)
to_chat(user, "You unfold [src].")
- var/atom/movable/internal_paper_tmp = internalPaper
+ var/obj/item/paper/internal_paper_tmp = internalPaper
internal_paper_tmp.forceMove(loc)
internalPaper = null
qdel(src)
@@ -86,11 +98,18 @@
. = ..(target, range, speed, thrower, FALSE, diagonals_first, callback)
/obj/item/paperplane/throw_impact(atom/hit_atom)
+ if(iscarbon(hit_atom))
+ var/mob/living/carbon/C = hit_atom
+ if(C.can_catch_item(TRUE))
+ var/datum/action/innate/origami/origami_action = locate() in C.actions
+ if(origami_action?.active) //if they're a master of origami and have the ability turned on, force throwmode on so they'll automatically catch the plane.
+ C.throw_mode_on()
+
if(..() || !ishuman(hit_atom))//if the plane is caught or it hits a nonhuman
return
var/mob/living/carbon/human/H = hit_atom
- if(prob(2))
- if((H.head && H.head.flags_cover & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags_cover & MASKCOVERSEYES) || (H.glasses && H.glasses.flags_cover & GLASSESCOVERSEYES))
+ if(prob(hit_probability))
+ if(H.is_eyes_covered())
return
visible_message("\The [src] hits [H] in the eye!")
H.adjust_blurriness(6)
@@ -107,5 +126,11 @@
return
to_chat(user, "You fold [src] into the shape of a plane!")
user.temporarilyRemoveItemFromInventory(src)
- I = new /obj/item/paperplane(user, src)
+ var/obj/item/paperplane/plane_type = /obj/item/paperplane
+ //Origami Master
+ var/datum/action/innate/origami/origami_action = locate() in user.actions
+ if(origami_action?.active)
+ plane_type = /obj/item/paperplane/origami
+
+ I = new plane_type(user, src)
user.put_in_hands(I)