Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions code/__defines/dcs/signals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -791,4 +791,8 @@
#define COMSIG_VORE_HEALTHBAR_UPDATE "vore_healthbar_update"
#define COMSIG_VORE_HEALTHBAR_CLEANUP "vore_healthbar_cleanup"
#define HIDE_AND_SEEK_ROUND_END "round_end"
#define COMSIG_KEY_ATTACK "key_event"
#define COMSIG_DUNGEON_TRIGGER "dungeon_trigger"
#define COMSIG_DUNGEON_UNTRIGGER "dungeon_untrigger"
#define COMSIG_RESOLVE_ATTACKBY "resolve_attackby"
//RS ADD END
3 changes: 3 additions & 0 deletions code/_onclick/click.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@
build_click(src, client.buildmode, params, A)
return

if(client?.dungeon_maker) //RS ADD
dungeon_maker_click(src,client.dungeon_maker, params, A) //RS ADD

if(is_incorporeal()) //RS ADD START - don't shoot at or attack people while you are intangible
face_atom(A)
return //RS ADD END
Expand Down
1 change: 1 addition & 0 deletions code/_onclick/item_attack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ avoid code duplication. This includes items that may sometimes act as a standard

//I would prefer to rename this to attack(), but that would involve touching hundreds of files.
/obj/item/proc/resolve_attackby(atom/A, mob/user, var/attack_modifier = 1, var/click_parameters)
SEND_SIGNAL(src,COMSIG_RESOLVE_ATTACKBY,A,user) //RS ADD
add_fingerprint(user)
. = pre_attack(A, user, click_parameters)
if(.) // We're returning the value of pre_attack, important if it has a special return.
Expand Down
156 changes: 156 additions & 0 deletions code/game/Rogue Star/_Component/component_adder.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
//RS FILE
/obj/component_adder //This base type doesn't do anything!
name = "component adder"
desc = "You shouldn't see this."
icon = 'icons/rogue-star/component_adder.dmi'
icon_state = "adder"
plane = PLANE_ADMIN_SECRET
color = "#1ae200"
var/component_type
var/id = "REPLACE ME"
var/list/valid_types = list()
var/late = FALSE

/obj/component_adder/New(loc, new_id)
. = ..()
if(new_id)
id = new_id

/obj/component_adder/Initialize(mapload)
. = ..()
if(late)
return INITIALIZE_HINT_LATELOAD
seek_valid_target()
qdel(src)

/obj/component_adder/LateInitialize()
seek_valid_target()
qdel(src)

/obj/component_adder/proc/seek_valid_target()
if(!component_type)
return
var/turf/T = get_turf(src)
for(var/atom/thing in T.contents)
if(thing == src)
continue
for(var/type_check in valid_types)
if(istype(thing,type_check))
if(!special_check(thing))
add_component(thing)

/obj/component_adder/proc/add_component(var/atom/target)
if(!target)
return
. = target.LoadComponent(component_type,id,color)

/obj/component_adder/proc/consider_overlay_state(var/atom/consider)
return null

/obj/component_adder/proc/special_check(var/atom/consider)
return FALSE

/obj/component_adder/lock
name = "lock component"
icon_state = "lock"
component_type = /datum/component/dungeon_mechanic/lock
valid_types = list(
/obj/machinery/door/airlock,
/obj/structure/simple_door,
/obj/dungeon_obstacle,
/obj/machinery/door/blast,
/obj/dungeon_switch,
/obj/multipoint/teleporter,
/obj/structure/closet,
/obj/structure/portal_event
)
var/onetime = FALSE

/obj/component_adder/lock/add_component(atom/target)
var/datum/component/dungeon_mechanic/lock/L = ..()
L.onetime = onetime

/obj/component_adder/key
name = "key component"
icon_state = "key"
component_type = /datum/component/dungeon_mechanic/key
valid_types = list(
/obj/item/key,
/obj/item/weapon/card
)
var/onetime = FALSE
var/master = FALSE

/obj/component_adder/key/add_component(atom/target)
var/datum/component/dungeon_mechanic/key/K = ..()
K.onetime = onetime
K.master_key = master

/obj/component_adder/key/onetime
onetime = TRUE
/obj/component_adder/key/master
master = TRUE
/obj/component_adder/key/onetime_master
onetime = TRUE
master = TRUE

/obj/component_adder/trigger
name = "trigger component"
icon_state = "trigger"
component_type = /datum/component/dungeon_mechanic/trigger
valid_types = list(
/obj/dungeon_obstacle,
/obj/dungeon_switch,
/obj/machinery/door/airlock,
/obj/structure/simple_door,
/obj/machinery/door/blast,
/obj/multipoint_trigger,
/obj/listener
)
var/onetime = FALSE
var/solo = TRUE
var/key_lock = FALSE

/obj/component_adder/trigger/onetime
onetime = TRUE
/obj/component_adder/trigger/non_solo
solo = FALSE
/obj/component_adder/trigger/puzzle
onetime = TRUE
solo = FALSE
/obj/component_adder/trigger/gather_gate
onetime = TRUE
solo = FALSE
key_lock = TRUE

/obj/component_adder/trigger/add_component()
var/datum/component/dungeon_mechanic/trigger/T = ..()
T.onetime = onetime
T.solo = solo
T.key_lock = key_lock

/obj/component_adder/reciever
name = "reciever component"
icon_state = "reciever"
component_type = /datum/component/dungeon_mechanic/reciever
valid_types = list(
/obj/machinery/door/airlock,
/obj/structure/simple_door,
/obj/dungeon_obstacle,
/obj/machinery/door/blast,
/obj/dungeon_switch,
/obj/multipoint/teleporter,
/obj/multipoint/barrier,
/obj/structure/portal_event
)
late = TRUE

/obj/component_adder/pair
name = "pair component"
icon_state = "pair"
component_type = /datum/component/dungeon_mechanic/pair
valid_types = list(
/obj/multipoint/teleporter,
/obj/structure/portal_event
)
late = TRUE
Loading
Loading