Skip to content

Commit

Permalink
Merge branch 'neck-slot' of https://github.com/simb11/TauCetiClassic
Browse files Browse the repository at this point in the history
…into neck-slot
  • Loading branch information
simb11 committed Oct 15, 2024
2 parents 926ba3b + 3e88285 commit fde23a8
Show file tree
Hide file tree
Showing 147 changed files with 3,978 additions and 1,910 deletions.
12 changes: 12 additions & 0 deletions code/__DEFINES/dcs/signals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,18 @@
#define COMSIG_LIVING_CAN_TRACK "mob_cantrack"
#define COMPONENT_CANT_TRACK (1<<0)
#define COMSIG_LIVING_BUMPED "living_bumped"
// from base of mob/living/proc/log_combat (mob/living/carbon/human/attacker)
#define COMSIG_HUMAN_HARMED_OTHER "human_harmed_other"
// from base of /obj/structure/stool/bed/chair/noose/user_buckle_mob()
#define COMSIG_HUMAN_ON_SUICIDE "human_on_suicide"
// from base of /mob/living/carbon/proc/handle_alerts()
#define COMSIG_HUMAN_ON_ADJUST_DRUGINESS "human_on_adjust_drugines"
// from base of /obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume()
#define COMSIG_HUMAN_ON_CONSUME "human_on_consume"
// from base of /turf/simulated/floor/carpet/Entered(atom/movable/O)
#define COMSIG_HUMAN_ON_CARPET "human_on_carpet"
// from base of /mob/living/carbon/human/say()
#define COMSIG_HUMAN_SAY "human_say"

/// from /obj/effect/proc_holder/changeling/transform/sting_action(): (mob/living/carbon/human/user)
#define COMSIG_CHANGELING_TRANSFORM "changeling_transform"
Expand Down
29 changes: 15 additions & 14 deletions code/__DEFINES/human_layers.dm
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
//Human Overlays Indexes/////////
#define FIRE_LOWER_LAYER 28
#define BODY_LAYER 27
#define EXTERNAL_APPEARANCE 26
#define MUTATIONS_LAYER 25
#define DAMAGE_LAYER 24
#define SURGERY_LAYER 23 //bs12 specific.
#define BANDAGE_LAYER 22
#define UNIFORM_LAYER 21
#define ID_LAYER 20
#define SHOES_LAYER 19
#define TAIL_LAYER 18 //bs12 specific. this hack is probably gonna come back to haunt me
#define GLOVES_LAYER 17
#define EARS_LAYER 16
#define TOTAL_LAYERS 29
#define FIRE_LOWER_LAYER 29
#define BODY_LAYER 28
#define EXTERNAL_APPEARANCE 27
#define MUTATIONS_LAYER 26
#define DAMAGE_LAYER 25
#define SURGERY_LAYER 24 //bs12 specific.
#define BANDAGE_LAYER 23
#define UNIFORM_LAYER 22
#define ID_LAYER 21
#define SHOES_LAYER 20
#define TAIL_LAYER 19 //bs12 specific. this hack is probably gonna come back to haunt me
#define GLOVES_LAYER 18
#define R_EAR_LAYER 17
#define L_EAR_LAYER 16
#define SUIT_LAYER 15
#define GLASSES_LAYER 14
#define BELT_LAYER 13 //Possible make this an overlay of somethign required to wear a belt?
Expand All @@ -27,7 +29,6 @@
#define R_HAND_LAYER 3
#define FIRE_UPPER_LAYER 2
#define TARGETED_LAYER 1 //BS12: Layer for the target overlay from weapon targeting system
#define TOTAL_LAYERS 28
//////////////////////////////////
//Human Limb Overlays Indexes/////
#define LIMB_HEAD_LAYER 7
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@

#define isskeleton(A) (A.get_species() in list(SKELETON, SKELETON_UNATHI, SKELETON_TAJARAN, SKELETON_SKRELL, SKELETON_VOX))

#define ispluvian(A) (A.get_species() == PLUVIAN)

// CARBON
#define isxenoqueen(A) (istype(A, /mob/living/carbon/xenomorph/humanoid/queen))

Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,7 @@
/turf/simulated/wall/r_wall/purple, \
/turf/simulated/wall/r_wall/green, \
/turf/simulated/wall/r_wall/beige, \
/turf/simulated/wall/heaven, \
/obj/structure/falsewall, \
/obj/structure/falsewall/yellow, \
/obj/structure/falsewall/red, \
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/mob.dm
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@

// Species Names (keep in mind, that whitelist and preferences DB depends on this names too, and if anything is renamed, update MYSQL tables or is_alien_whitelisted() proc and preferences).
#define HUMAN "Human"
#define PLUVIAN "Pluvian"
#define PLUVIAN_SPIRIT "Pluvian Spirit"
#define UNATHI "Unathi"
#define TAJARAN "Tajaran"
#define SKRELL "Skrell"
Expand Down
3 changes: 3 additions & 0 deletions code/__DEFINES/religion.dm
Original file line number Diff line number Diff line change
Expand Up @@ -103,3 +103,6 @@
#define REACTION_RESULT "result_id"
#define REACITON_COST "favor_cost"
#define REACTION_ASPECTS "needed_aspects"

// pluvians stuff
#define PLUVIAN_HARAM_THRESHOLD 5
1 change: 1 addition & 0 deletions code/__DEFINES/research.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#define RESEARCH_BLUESPACE "bluespace"
#define RESEARCH_ROBOTICS "robotics"
#define RESEARCH_ILLEGAL "illegal"
#define RESEARCH_SPECIAL "special"

// Is used in calculating reliability increase per prototype created.
#define RND_RELIABILITY_EXPONENT 0.75
Expand Down
2 changes: 1 addition & 1 deletion code/_globalvars/database.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ var/global/DBConnection/dbcon = new()
// Xeno/role whitelist database ( code/modules/admin/whitelist.dm )
//
var/global/list/role_whitelist // cache of all ckeys and their roles
var/global/list/whitelisted_roles = list("unathi", "tajaran", "skrell", "diona", "machine", "vox", "ian") // Case important, everything must be in lowercase.
var/global/list/whitelisted_roles = list("unathi", "tajaran", "skrell", "diona", "machine", "vox", "ian", "pluvian") // Case important, everything must be in lowercase.
1 change: 1 addition & 0 deletions code/_globalvars/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ var/global/list/ignore_vision_inside = list(
var/global/datum/religion/chaplain/chaplain_religion
// Cultists religion. You/I can change it?
var/global/datum/religion/cult/cult_religion
var/global/datum/religion/pluvia/pluvia_religion
var/global/list/datum/religion/all_religions = list()

//Used for global activation of pylons
Expand Down
4 changes: 4 additions & 0 deletions code/_onclick/hud/_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -170,3 +170,7 @@
#define HUD_COPY_ICON 1
#define HUD_COPY_COLOR 2
#define HUD_COPY_ALPHA 4

//Parallax
#define PARALLAX_CLASSIC "parallax_classic"
#define PARALLAX_HEAVEN "parallax_heaven"
6 changes: 5 additions & 1 deletion code/_onclick/hud/action.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
var/button_icon = 'icons/hud/actions.dmi'
var/button_icon_state = "default"
var/background_icon_state = "bg_default"
var/icon/button_overlay_icon = null
var/button_overlay_state = null
var/transparent_when_unavailable = TRUE
var/mob/owner
var/toggleable = FALSE
Expand Down Expand Up @@ -191,7 +193,9 @@

cut_overlays()
var/image/img
if(owner.action_type == AB_ITEM && owner.target)
if(owner.button_overlay_icon && owner.button_overlay_state)
img = image(owner.button_overlay_icon, owner.button_overlay_state)
else if(owner.action_type == AB_ITEM && owner.target)
var/obj/item/I = owner.target
img = image(I.icon, src , I.icon_state)
else if(owner.button_icon && owner.button_icon_state)
Expand Down
14 changes: 14 additions & 0 deletions code/_onclick/hud/alert.dm
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,20 @@
или стрелять из пистолета, чтобы передвигаться в соответствии с 3-м законом Ньютона."
icon_state = "weightless"

/atom/movable/screen/alert/pluvia_ring
name = "Входящий вызов"
desc = "Кто-то с того света желает говорить с вами."
icon_state = "ring"

/atom/movable/screen/alert/pluvia_ring/Click()
if(!mob_viewer)
return
to_chat(mob_viewer, "Вы сбросили звонок!")
for(var/obj/effect/proc_holder/spell/no_target/ancestor_call/S in mob_viewer.spell_list)
S.target_loc = null
S.my_gong = null
mob_viewer.clear_alert("Звонок")

//ALIENS

/atom/movable/screen/alert/alien_tox
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/hud/hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ var/global/list/available_ui_styles = list(

mymob.update_action_buttons()
reorganize_alerts()
create_parallax() // todo: why we recreate parallax every time we change mob or press f12
set_parallax(mymob.current_parallax) // todo: why we recreate parallax every time we change mob or press f12
hidden_inventory_update()
persistant_inventory_update()

Expand Down
32 changes: 22 additions & 10 deletions code/_onclick/hud/parallax.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,25 @@
var/parallax_layers_max = 3
var/parallax_animate_timer

/datum/hud/proc/create_parallax()
/mob
var/current_parallax = PARALLAX_CLASSIC

/datum/hud/proc/create_parallax(parallax_type)
var/client/C = mymob.client
if (!apply_parallax_pref())
return

if(!length(C.parallax_layers_cached))
var/icon/parralax_icon
switch(parallax_type)
if(PARALLAX_CLASSIC)
parralax_icon = 'icons/effects/parallax.dmi'
if(PARALLAX_HEAVEN)
parralax_icon = 'icons/effects/pluvia_water.dmi'
if(!length(C.parallax_layers_cached) || parallax_type != mymob.current_parallax)
C.parallax_layers_cached = list()
C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_1(null, C.view, 'icons/effects/parallax.dmi')
C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_2(null, C.view, 'icons/effects/parallax.dmi')
C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_3(null, C.view, 'icons/effects/parallax.dmi')
//C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/planet(null, C.view, 'icons/effects/parallax.dmi') awaiting for new planet image in replace for lavaland

C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_1(null, C.view, parralax_icon)
C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_2(null, C.view, parralax_icon)
C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_3(null, C.view, parralax_icon)
C.parallax_layers = C.parallax_layers_cached.Copy()

if (length(C.parallax_layers) > C.parallax_layers_max)
Expand All @@ -36,7 +43,7 @@
var/client/C = mymob.client
C.screen -= (C.parallax_layers_cached)
C.parallax_layers = null

mymob.current_parallax = null
C.update_plane_masters(/atom/movable/screen/plane_master/parallax_white)

/datum/hud/proc/apply_parallax_pref()
Expand Down Expand Up @@ -68,9 +75,14 @@
C.parallax_layers_max = 3
return TRUE

/datum/hud/proc/update_parallax_pref()
/datum/hud/proc/set_parallax(new_parallax)
remove_parallax()
create_parallax()
create_parallax(new_parallax)
mymob.current_parallax = new_parallax

/datum/hud/proc/update_parallax_pref()
set_parallax(mymob.current_parallax)


// This sets which way the current shuttle is moving (returns true if the shuttle has stopped moving so the caller can append their animation)
/datum/hud/proc/set_parallax_movedir(new_parallax_movedir)
Expand Down
5 changes: 5 additions & 0 deletions code/_onclick/item_attack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
user.SetNextMove(CLICK_CD_ACTION)
user.visible_message("<span class='danger'>[user] slit [M]'s throat open with \the [name]!</span>")
M.log_combat(user, "knifed with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])")
SEND_SIGNAL(user, COMSIG_HUMAN_HARMED_OTHER, M)
return

if (isbrain(M))
Expand All @@ -105,6 +106,8 @@
M.equip_to_slot_if_possible(src, SLOT_HEAD, disable_warning = TRUE)
user.visible_message("<span class='danger'>[user] slams [name] on the [M]'s head!</span>")
M.log_combat(user, "slammed with [name] on the head (INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(BRUTE)])")
if(force > 0)
SEND_SIGNAL(user, COMSIG_HUMAN_HARMED_OTHER, M)
var/list/data = user.get_unarmed_attack()
// if item has no force just assume attacker smashed his fist (no scratches or any modifiers) against victim's head.
if(user.a_intent in list(INTENT_PUSH, INTENT_GRAB))
Expand All @@ -113,6 +116,8 @@
return TRUE

M.log_combat(user, "attacked with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])")
if(force > 0)
SEND_SIGNAL(user, COMSIG_HUMAN_HARMED_OTHER, M)

var/power = force
if(ishuman(user) && damtype == BRUTE)
Expand Down
2 changes: 1 addition & 1 deletion code/controllers/subsystem/ticker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,6 @@ SUBSYSTEM_DEF(ticker)

/datum/controller/subsystem/ticker/proc/setup()
to_chat(world, "<span class='boldannounce'>Игра начинается...</span>")

// Discuss your stuff after the round ends.
if(config.ooc_round_autotoggle)
to_chat(world, "<span class='warning bold'>OOC-канал отключен для всех на время раунда!</span>")
Expand Down Expand Up @@ -270,6 +269,7 @@ SUBSYSTEM_DEF(ticker)
query_round_game_mode.Execute()

create_religion(/datum/religion/chaplain)
create_religion(/datum/religion/pluvia)
setup_hud_objects()

create_characters() //Create player characters and transfer them
Expand Down
2 changes: 1 addition & 1 deletion code/datums/announcements/station.dm
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@

/datum/announcement/station/nuke_teleport/play(area/new_loc, area/old_loc)
if(new_loc && old_loc)
message = "Обнаружено подпространственное перемещение ядерной боеголовки из [CASE(old_loc, PREPOSITIONAL_CASE)] в [CASE(new_loc, PREPOSITIONAL_CASE)]. Требуется немедленное вмешательство!"
message = "Обнаружено подпространственное перемещение ядерной боеголовки из [CASE(old_loc, GENITIVE_CASE)] в [CASE(new_loc, ACCUSATIVE_CASE)]. Требуется немедленное вмешательство!"
..()

/datum/announcement/station/maint_revoke
Expand Down
4 changes: 2 additions & 2 deletions code/datums/components/clickplace.dm
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@
victim.apply_damage(8, def_zone = BP_HEAD)
victim.visible_message("<span class='danger'>[assailant] slams [victim]'s face against \the [A]!</span>")
playsound(parent, 'sound/weapons/tablehit1.ogg', VOL_EFFECTS_MASTER)

SEND_SIGNAL(assailant, COMSIG_HUMAN_HARMED_OTHER,victim )
victim.log_combat(assailant, "face-slammed against \the [parent]")
return FALSE

Expand Down Expand Up @@ -227,8 +227,8 @@
INVOKE_ASYNC(victim, TYPE_PROC_REF(/atom/movable, do_simple_move_animation), A.loc, old_loc)
victim.Stun(2)
victim.Weaken(5)

victim.log_combat(assailant, "laid on [A]")
SEND_SIGNAL(assailant, COMSIG_HUMAN_HARMED_OTHER, victim)
else if(assailant.a_intent != INTENT_HARM)
/// Let's pretend a face-slam doesn't exist.
to_chat(assailant, "<span class='warning'>You need a better grip to do that!</span>")
Expand Down
File renamed without changes.
File renamed without changes.
14 changes: 14 additions & 0 deletions code/datums/mind.dm
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@
var/creation_time = 0 //World time when this datum was New'd. Useful to tell how long since a character spawned
var/creation_roundtime

// Pluvia sochial credit system
var/pluvian_social_credit = 0 // everyone has it, even if not pluvian, used for letter vote
var/pluvian_haram_points = 0
var/pluvian_blessed = 0

var/willpower_amount = 1
var/possible_willpower_effects = list(/datum/willpower_effect/painkiller, /datum/willpower_effect/skills, /datum/willpower_effect/nutrition, /datum/willpower_effect/fat)
var/willpower_effects = list()
Expand Down Expand Up @@ -782,6 +787,15 @@
..()
if(!mind.assigned_role)
mind.assigned_role = "default" //default

//Pluvia social credit system
mind.pluvian_social_credit = species.pluvian_social_credit
if(mind.assigned_job)
var/list/static/pluvian_haram_jobs = list("Captain","Head of Security","Warden","Security Officer","Security Cadet","Blueshield Officer","Internal Affairs Agent")
if(mind.assigned_job.title in pluvian_haram_jobs)
mind.pluvian_social_credit = 0
if(ispluvian(src))
global.pluvia_religion.add_member(src, HOLY_ROLE_PRIEST)

//slime
/mob/living/carbon/slime/mind_initialize()
Expand Down
1 change: 1 addition & 0 deletions code/datums/outfits/jobs/centcom.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,4 @@

implants = list(
/obj/item/weapon/implant/mind_protect/loyalty, /obj/item/weapon/implant/blueshield)

1 change: 0 additions & 1 deletion code/datums/outfits/jobs/security.dm
Original file line number Diff line number Diff line change
Expand Up @@ -135,4 +135,3 @@
uniform = /obj/item/clothing/under/syndicate/tacticool
uniform_f = /obj/item/clothing/under/syndicate/tacticool
l_ear = /obj/item/device/radio/headset/headset_sec/nt_pmc

Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@
user.visible_message("<span class='danger'>[user] devours [target]!</span>",
"<span class='notice'>We have devour [target]!</span>")
to_chat(target, "<span class='danger'>You have been devoured by the changeling!</span>")
var/mob/living/carbon/human/changeling = user
changeling.mind.pluvian_social_credit += target.mind.pluvian_social_credit
for(var/obj/item/I in target)
target.drop_from_inventory(I)
target.spawn_gibs()
Expand Down
3 changes: 3 additions & 0 deletions code/game/gamemodes/modes_gameplays/wizard/soulstone.dm
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@
if(HAS_TRAIT(H, TRAIT_NO_SOUL) || HAS_TRAIT(H, TRAIT_SOULSTONE_IMMUNE) || H.species.flags[IS_SYNTHETIC])
to_chat(user, "<span class='warning'>У этого существа нет души.</span>")
return ..()
if(istype(H.my_religion, /datum/religion/pluvia) || H.mind.pluvian_blessed)
to_chat(user, "<span class='warning'>Душа этого существа под защитой.</span>")
return ..()

H.log_combat(user, "soul-captured via [name]")

Expand Down
3 changes: 2 additions & 1 deletion code/game/gamemodes/objectives/bomb.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
for(var/area in areas_for_objective)
if(istype(A, area) && devastation_range >= 1)
already_completed = TRUE
UnregisterSignal(SSexplosions, COMSIG_EXPLOSIONS_EXPLODE)
UnregisterSignal(SSexplosions, COMSIG_EXPLOSIONS_EXPLODE)
break

/datum/objective/bomb/check_completion()
if(!already_completed)
Expand Down
4 changes: 2 additions & 2 deletions code/game/jobs/job/centcom.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
minimal_player_age = 14
minimal_player_ingame_minutes = 2400
outfit = /datum/outfit/job/blueshield
restricted_species = list(SKRELL, UNATHI, TAJARAN, DIONA, VOX, IPC)
restricted_species = list(SKRELL, UNATHI, TAJARAN, DIONA, VOX, IPC, PLUVIAN)
skillsets = list("Blueshield Officer" = /datum/skillset/blueshield)
/*
HEY YOU!
Expand Down Expand Up @@ -46,5 +46,5 @@
AND BUMPING UP THE SAVEFILE_VERSION_MAX, AND SAVEFILE_VERSION_SPECIES_JOBS
~Luduk
*/
restricted_species = list(SKRELL, UNATHI, TAJARAN, DIONA, VOX, IPC)
restricted_species = list(SKRELL, UNATHI, TAJARAN, DIONA, VOX, IPC, PLUVIAN)
flags = JOB_FLAG_CENTCOMREPRESENTATIVE|JOB_FLAG_BLUESHIELD_PROTEC
1 change: 1 addition & 0 deletions code/game/jobs/job/civilian_chaplain.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
outfit = /datum/outfit/job/chaplain
skillsets = list("Chaplain" = /datum/skillset/chaplain)
flags = JOB_FLAG_CIVIL
restricted_species = list(PLUVIAN)

/datum/job/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(!visualsOnly && H.mind)
Expand Down
Loading

0 comments on commit fde23a8

Please sign in to comment.