mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-07-15 10:13:03 +01:00
Graffiti centers on where you click. (#9255)
* Graffiti centers on where you click. * Oversights, and pixelshifted engravings. * Better returns
This commit is contained in:
@@ -4,25 +4,38 @@
|
||||
icon = 'icons/obj/rune.dmi'
|
||||
plane = DIRTY_PLANE
|
||||
anchored = 1
|
||||
var/art_type
|
||||
var/art_color
|
||||
var/art_shade
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/Initialize(var/ml, main = "#FFFFFF",shade = "#000000",var/type = "rune")
|
||||
. = ..(ml, 0) // mapload, age
|
||||
name = type
|
||||
desc = "A [type] drawn in crayon."
|
||||
|
||||
// Persistence vars.
|
||||
art_type = type
|
||||
art_color = main
|
||||
art_shade = shade
|
||||
|
||||
switch(type)
|
||||
if("rune")
|
||||
type = "rune[rand(1,6)]"
|
||||
if("graffiti")
|
||||
type = pick("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa")
|
||||
|
||||
var/icon/mainOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]",2.1)
|
||||
var/icon/shadeOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]s",2.1)
|
||||
update_icon()
|
||||
|
||||
mainOverlay.Blend(main,ICON_ADD)
|
||||
shadeOverlay.Blend(shade,ICON_ADD)
|
||||
add_hiddenprint(usr)
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/update_icon()
|
||||
cut_overlays()
|
||||
var/icon/mainOverlay = new/icon('icons/effects/crayondecal.dmi',"[art_type]",2.1)
|
||||
var/icon/shadeOverlay = new/icon('icons/effects/crayondecal.dmi',"[art_type]s",2.1)
|
||||
|
||||
mainOverlay.Blend(art_color,ICON_ADD)
|
||||
shadeOverlay.Blend(art_shade,ICON_ADD)
|
||||
|
||||
add_overlay(mainOverlay)
|
||||
add_overlay(shadeOverlay)
|
||||
|
||||
add_hiddenprint(usr)
|
||||
return
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
shadeColour = input(user, "Please select the shade colour.", "Crayon colour") as color
|
||||
return
|
||||
|
||||
/obj/item/pen/crayon/afterattack(atom/target, mob/user as mob, proximity)
|
||||
/obj/item/pen/crayon/afterattack(atom/target, mob/user as mob, proximity, click_parameters)
|
||||
if(!proximity) return
|
||||
if(istype(target,/turf/simulated/floor))
|
||||
var/drawtype = input("Choose what you'd like to draw.", "Crayon scribbles") in list("graffiti","rune","letter","arrow")
|
||||
@@ -93,7 +93,18 @@
|
||||
return
|
||||
to_chat(user, "You start drawing an arrow on the [target.name].")
|
||||
if(instant || do_after(user, 50))
|
||||
new /obj/effect/decal/cleanable/crayon(target,colour,shadeColour,drawtype)
|
||||
|
||||
var/list/mouse_control = params2list(click_parameters)
|
||||
var/p_x = 0
|
||||
var/p_y = 0
|
||||
if(mouse_control["icon-x"])
|
||||
p_x = text2num(mouse_control["icon-x"]) - 16
|
||||
if(mouse_control["icon-y"])
|
||||
p_y = text2num(mouse_control["icon-y"]) - 16
|
||||
|
||||
var/atom/new_graffiti = new /obj/effect/decal/cleanable/crayon(target,colour,shadeColour,drawtype)
|
||||
new_graffiti.pixel_x = p_x
|
||||
new_graffiti.pixel_y = p_y
|
||||
to_chat(user, "You finish drawing.")
|
||||
|
||||
if(config.log_graffiti)
|
||||
@@ -209,4 +220,4 @@
|
||||
..()
|
||||
|
||||
/obj/item/pen/crayon/attack_self(var/mob/user)
|
||||
return
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/turf/simulated/floor/attackby(var/obj/item/C, var/mob/user)
|
||||
/turf/simulated/floor/attackby(var/obj/item/C, var/mob/user, attack_modifier, click_parameters)
|
||||
|
||||
if(!C || !user)
|
||||
return 0
|
||||
@@ -29,7 +29,7 @@
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
if(L.a_intent == I_HELP && L.is_preference_enabled(/datum/client_preference/engrave_graffiti))
|
||||
try_graffiti(L, C)
|
||||
try_graffiti(L, C, click_parameters)
|
||||
|
||||
if(istype(C, /obj/item/stack/tile/roofing))
|
||||
var/expended_tile = FALSE // To track the case. If a ceiling is built in a multiz zlevel, it also necessarily roofs it against weather
|
||||
|
||||
@@ -127,12 +127,12 @@
|
||||
return success_smash(user)
|
||||
return fail_smash(user)
|
||||
|
||||
/turf/simulated/wall/attackby(var/obj/item/W, var/mob/user)
|
||||
/turf/simulated/wall/attackby(var/obj/item/W, var/mob/user, attack_modifier, click_parameters)
|
||||
|
||||
user.setClickCooldown(user.get_attack_speed(W))
|
||||
|
||||
if(!construction_stage && user.a_intent == I_HELP && user.is_preference_enabled(/datum/client_preference/engrave_graffiti))
|
||||
if(try_graffiti(user,W))
|
||||
if(try_graffiti(user,W,click_parameters))
|
||||
return
|
||||
|
||||
if (!user.IsAdvancedToolUser())
|
||||
@@ -405,4 +405,4 @@
|
||||
return
|
||||
|
||||
else if(!istype(W,/obj/item/rcd) && !istype(W, /obj/item/reagent_containers))
|
||||
return attack_hand(user)
|
||||
return attack_hand(user)
|
||||
|
||||
+13
-1
@@ -308,7 +308,7 @@
|
||||
/turf/proc/can_engrave()
|
||||
return FALSE
|
||||
|
||||
/turf/proc/try_graffiti(var/mob/vandal, var/obj/item/tool)
|
||||
/turf/proc/try_graffiti(var/mob/vandal, var/obj/item/tool, click_parameters)
|
||||
|
||||
if(!tool.sharp || !can_engrave())
|
||||
return FALSE
|
||||
@@ -341,6 +341,18 @@
|
||||
graffiti.message = message
|
||||
graffiti.author = vandal.ckey
|
||||
|
||||
if(click_parameters)
|
||||
var/list/mouse_control = params2list(click_parameters)
|
||||
var/p_x = 0
|
||||
var/p_y = 0
|
||||
if(mouse_control["icon-x"])
|
||||
p_x = text2num(mouse_control["icon-x"]) - 16
|
||||
if(mouse_control["icon-y"])
|
||||
p_y = text2num(mouse_control["icon-y"]) - 16
|
||||
|
||||
graffiti.pixel_x = p_x
|
||||
graffiti.pixel_y = p_y
|
||||
|
||||
if(lowertext(message) == "elbereth")
|
||||
to_chat(vandal, "<span class='notice'>You feel much safer.</span>")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user