Merge pull request #10698 from Putnam3145/ghost-dojo-ban
Made ghost cafe mobs dust upon leaving, allowed ghost cafe bans
This commit is contained in:
@@ -37,7 +37,7 @@
|
|||||||
#define ROLE_GANG "gangster"
|
#define ROLE_GANG "gangster"
|
||||||
#define ROLE_BLOODSUCKER "bloodsucker"
|
#define ROLE_BLOODSUCKER "bloodsucker"
|
||||||
//#define ROLE_MONSTERHUNTER "monster hunter" Disabled for now
|
//#define ROLE_MONSTERHUNTER "monster hunter" Disabled for now
|
||||||
|
#define ROLE_GHOSTCAFE "ghostcafe"
|
||||||
//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR.
|
//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR.
|
||||||
//The gamemode specific ones are just so the gamemodes can query whether a player is old enough
|
//The gamemode specific ones are just so the gamemodes can query whether a player is old enough
|
||||||
//(in game days played) to play that role
|
//(in game days played) to play that role
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
/datum/element/dusts_on_leaving_area
|
||||||
|
element_flags = ELEMENT_DETACH | ELEMENT_BESPOKE
|
||||||
|
id_arg_index = 2
|
||||||
|
var/list/attached_mobs = list()
|
||||||
|
var/list/area_types = list()
|
||||||
|
|
||||||
|
/datum/element/dusts_on_leaving_area/Attach(datum/target,types)
|
||||||
|
. = ..()
|
||||||
|
if(!ismob(target))
|
||||||
|
return ELEMENT_INCOMPATIBLE
|
||||||
|
attached_mobs += target
|
||||||
|
area_types = types
|
||||||
|
START_PROCESSING(SSprocessing,src)
|
||||||
|
|
||||||
|
/datum/element/dusts_on_leaving_area/Detach(mob/M)
|
||||||
|
. = ..()
|
||||||
|
if(M in attached_mobs)
|
||||||
|
attached_mobs -= M
|
||||||
|
if(!attached_mobs.len)
|
||||||
|
STOP_PROCESSING(SSprocessing,src)
|
||||||
|
|
||||||
|
/datum/element/dusts_on_leaving_area/process()
|
||||||
|
for(var/m in attached_mobs)
|
||||||
|
var/mob/M = m
|
||||||
|
var/area/A = get_area(M)
|
||||||
|
if(!(A.type in area_types))
|
||||||
|
M.dust(force = TRUE)
|
||||||
|
Detach(M)
|
||||||
@@ -619,7 +619,7 @@
|
|||||||
assignedrole = "Ghost Cafe Visitor"
|
assignedrole = "Ghost Cafe Visitor"
|
||||||
flavour_text = "Is this what life after death is like?"
|
flavour_text = "Is this what life after death is like?"
|
||||||
skip_reentry_check = TRUE
|
skip_reentry_check = TRUE
|
||||||
banType = "ghostcafe"
|
banType = ROLE_GHOSTCAFE
|
||||||
|
|
||||||
/datum/action/toggle_dead_chat_mob
|
/datum/action/toggle_dead_chat_mob
|
||||||
icon_icon = 'icons/mob/mob.dmi'
|
icon_icon = 'icons/mob/mob.dmi'
|
||||||
@@ -642,12 +642,14 @@
|
|||||||
/obj/effect/mob_spawn/human/ghostcafe/special(mob/living/carbon/human/new_spawn)
|
/obj/effect/mob_spawn/human/ghostcafe/special(mob/living/carbon/human/new_spawn)
|
||||||
if(new_spawn.client)
|
if(new_spawn.client)
|
||||||
new_spawn.client.prefs.copy_to(new_spawn)
|
new_spawn.client.prefs.copy_to(new_spawn)
|
||||||
|
var/area/A = get_area(src)
|
||||||
var/datum/outfit/O = new /datum/outfit/ghostcafe()
|
var/datum/outfit/O = new /datum/outfit/ghostcafe()
|
||||||
O.equip(new_spawn, FALSE, new_spawn.client)
|
O.equip(new_spawn, FALSE, new_spawn.client)
|
||||||
SSjob.equip_loadout(null, new_spawn, FALSE)
|
SSjob.equip_loadout(null, new_spawn, FALSE)
|
||||||
SSquirks.AssignQuirks(new_spawn, new_spawn.client, TRUE, TRUE, null, FALSE, new_spawn)
|
SSquirks.AssignQuirks(new_spawn, new_spawn.client, TRUE, TRUE, null, FALSE, new_spawn)
|
||||||
new_spawn.AddElement(/datum/element/ghost_role_eligibility)
|
new_spawn.AddElement(/datum/element/ghost_role_eligibility)
|
||||||
new_spawn.AddElement(/datum/element/dusts_on_catatonia)
|
new_spawn.AddElement(/datum/element/dusts_on_catatonia)
|
||||||
|
new_spawn.AddElement(/datum/element/dusts_on_leaving_area,list(A.type,/area/hilbertshotel))
|
||||||
ADD_TRAIT(new_spawn, TRAIT_SIXTHSENSE, GHOSTROLE_TRAIT)
|
ADD_TRAIT(new_spawn, TRAIT_SIXTHSENSE, GHOSTROLE_TRAIT)
|
||||||
ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT)
|
ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT)
|
||||||
ADD_TRAIT(new_spawn,TRAIT_PACIFISM,GHOSTROLE_TRAIT)
|
ADD_TRAIT(new_spawn,TRAIT_PACIFISM,GHOSTROLE_TRAIT)
|
||||||
|
|||||||
@@ -845,7 +845,11 @@
|
|||||||
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=[ROLE_LAVALAND];jobban4=[REF(M)]'><font color=red>Lavaland</font></a></td>"
|
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=[ROLE_LAVALAND];jobban4=[REF(M)]'><font color=red>Lavaland</font></a></td>"
|
||||||
else
|
else
|
||||||
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=[ROLE_LAVALAND];jobban4=[REF(M)]'>Lavaland</a></td>"
|
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=[ROLE_LAVALAND];jobban4=[REF(M)]'>Lavaland</a></td>"
|
||||||
|
// Ghost cafe
|
||||||
|
if(jobban_isbanned(M,ROLE_GHOSTCAFE))
|
||||||
|
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=[ROLE_GHOSTCAFE];jobban4=[REF(M)]'><font color=red>Lavaland</font></a></td>"
|
||||||
|
else
|
||||||
|
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=[ROLE_GHOSTCAFE];jobban4=[REF(M)]'>Lavaland</a></td>"
|
||||||
dat += "</tr></table>"
|
dat += "</tr></table>"
|
||||||
|
|
||||||
//Antagonist (Orange)
|
//Antagonist (Orange)
|
||||||
|
|||||||
@@ -475,6 +475,7 @@
|
|||||||
#include "code\datums\elements\_element.dm"
|
#include "code\datums\elements\_element.dm"
|
||||||
#include "code\datums\elements\cleaning.dm"
|
#include "code\datums\elements\cleaning.dm"
|
||||||
#include "code\datums\elements\dusts_on_catatonia.dm"
|
#include "code\datums\elements\dusts_on_catatonia.dm"
|
||||||
|
#include "code\datums\elements\dusts_on_leaving_area.dm"
|
||||||
#include "code\datums\elements\earhealing.dm"
|
#include "code\datums\elements\earhealing.dm"
|
||||||
#include "code\datums\elements\ghost_role_eligibility.dm"
|
#include "code\datums\elements\ghost_role_eligibility.dm"
|
||||||
#include "code\datums\elements\wuv.dm"
|
#include "code\datums\elements\wuv.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user