Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Thanos #2869

Draft
wants to merge 49 commits into
base: master
Choose a base branch
from
Draft

Thanos #2869

Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
25b92a2
I-I didn't even know you could get this many errors
ancient-engineer Aug 6, 2024
c291f5e
Icons and sounds
ancient-engineer Aug 7, 2024
003e84a
(:
ancient-engineer Aug 7, 2024
625dd88
(:
ancient-engineer Aug 7, 2024
b61b348
(:
ancient-engineer Aug 7, 2024
74651e4
Update monkestation/code/modules/gauntlet/syndie.dm
ancient-engineer Aug 7, 2024
a36513c
Update monkestation/code/modules/gauntlet/syndie.dm
ancient-engineer Aug 7, 2024
c3c81b4
(:
ancient-engineer Aug 7, 2024
fb8e004
Merge branch 'Thanos' of https://github.com/ancient-engineer/Monkesta…
ancient-engineer Aug 7, 2024
c9d29ed
(:
ancient-engineer Aug 7, 2024
afcda9b
(:
ancient-engineer Aug 8, 2024
471451d
(:
ancient-engineer Aug 8, 2024
9a2a52b
(:
ancient-engineer Aug 9, 2024
849faa9
(:
ancient-engineer Aug 10, 2024
fe0640e
Merge branch 'master' into Thanos
ancient-engineer Aug 10, 2024
dcacabc
(:
ancient-engineer Aug 10, 2024
ff2ed02
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA…
ancient-engineer Aug 10, 2024
b9b9d73
Sleep deprivation
ancient-engineer Aug 10, 2024
317dcae
SLEEP
ancient-engineer Aug 10, 2024
e5fb9c8
(:
ancient-engineer Aug 10, 2024
7809a62
(:
ancient-engineer Aug 10, 2024
9617939
(:
ancient-engineer Aug 10, 2024
e752cb2
(:
ancient-engineer Aug 10, 2024
a98c8b7
(:
ancient-engineer Aug 10, 2024
25daa21
(:
ancient-engineer Aug 11, 2024
16aabd6
(:
ancient-engineer Aug 11, 2024
6c2817c
Merge branch 'master' into Thanos
ancient-engineer Aug 11, 2024
2cd128e
(:
ancient-engineer Aug 11, 2024
02b73e4
Changes
ancient-engineer Aug 11, 2024
37b3554
Changes
ancient-engineer Aug 11, 2024
1872a71
Changes
ancient-engineer Aug 12, 2024
109355e
Fixes screenshot tests
ancient-engineer Aug 12, 2024
c45c625
Merge branch 'master' into Thanos
ancient-engineer Aug 13, 2024
c79ccb9
Merge branch 'master' into Thanos
ancient-engineer Aug 14, 2024
b62e63f
(:
ancient-engineer Aug 15, 2024
172ab25
Merge branch 'master' into Thanos
ancient-engineer Sep 7, 2024
740cbba
Removes duplicate ganymedian_armor
ancient-engineer Sep 7, 2024
4584b4f
Merge branch 'master' into Thanos
ancient-engineer Sep 8, 2024
49a67e3
Merge branch 'master' into Thanos
ancient-engineer Sep 8, 2024
bd2eaa1
Fixes traits
ancient-engineer Sep 8, 2024
f885f41
Fixes screenshot test
ancient-engineer Sep 8, 2024
d552e3c
Merge branch 'master' into Thanos
ancient-engineer Sep 23, 2024
fbd53ff
Changes
ancient-engineer Sep 23, 2024
9093d1f
Merge branch 'master' into Thanos
ancient-engineer Oct 3, 2024
6b02d9e
Changes
ancient-engineer Oct 3, 2024
0987f01
Merge branch 'master' into Thanos
ancient-engineer Oct 20, 2024
03dcee3
Merge branch 'master' into Thanos
ancient-engineer Dec 5, 2024
0d2d1ca
:)
ancient-engineer Dec 5, 2024
249e0d2
Merge branch 'master' into Thanos
ancient-engineer Dec 23, 2024
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
1 change: 1 addition & 0 deletions code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list(
#define isgoblin(A) (is_species(A, /datum/species/goblin)) //Monkestation Addition
#define isfloran(A) (is_species(A, /datum/species/floran)) //Monkestation Addition
#define isarachnid(A) (is_species(A, /datum/species/arachnid)) //Monkestation Addition
#define isganymede(A) (is_species(A, /datum/species/ganymede)) //Monkestation Addition


//More carbon mobs
Expand Down
6 changes: 6 additions & 0 deletions code/__DEFINES/~monkestation/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,9 @@

#define OLD_MAN_HENDERSON_DRUNKENNESS 41

#define BLUESPACE_STONE "bluespace stone"
#define SUPERMATTER_STONE "supermatter stone"
#define CLOWN_STONE "clown stone"
#define LAG_STONE "lag stone"
#define GHOST_STONE "ghost stone"
#define SYNDIE_STONE "syndie stone"
9 changes: 9 additions & 0 deletions code/__DEFINES/~monkestation/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,12 @@

///added to structures we want the mobs to be able to target.
#define TRAIT_MOB_DESTROYABLE "mob_destroyable"

#define TRAIT_WORTHY "worthy"
#define YEET_TRAIT "yeet_trait"
#define BLUESPACE_STONE_TRAIT "bluespace_stone_trait"
#define SYNDIE_STONE_TRAIT "syndie_stone_trait"
#define SUPERMATTER_STONE_TRAIT "supermatter_stone_trait"
#define LAG_STONE_TRAIT "lag_stone_trait"
#define GHOST_STONE_TRAIT "ghost_stone_trait"
#define GAUNTLET_TRAIT "gauntlet_trait"
4 changes: 4 additions & 0 deletions code/datums/components/stationloving.dm
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,10 @@

var/area/destination_area = destination_turf.loc
if (is_centcom_level(destination_turf.z))
//Monkestation Edit Begin
if(!isliving(atom_to_check) && istype(destination_area, /area/hippie/thanos_farm))
return FALSE
//Monkestation Edit End
if (is_type_in_typecache(destination_area, disallowed_centcom_areas))
return FALSE
return TRUE
Expand Down
3 changes: 3 additions & 0 deletions code/datums/proximity_monitor/fields/timestop.dm
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@
for(var/mob/living/to_check in GLOB.player_list)
if(HAS_TRAIT(to_check, TRAIT_TIME_STOP_IMMUNE))
immune[to_check] = TRUE
for(var/mob/living/to_check in GLOB.player_list)
if((locate(/obj/item/badmin_stone) in to_check) || (locate(/obj/item/badmin_gauntlet) in to_check))
immune[to_check] = TRUE
for(var/mob/living/basic/guardian/stand in GLOB.parasites)
if(stand.summoner && HAS_TRAIT(stand.summoner, TRAIT_TIME_STOP_IMMUNE)) //It would only make sense that a person's stand would also be immune.
immune[stand] = TRUE
Expand Down
2 changes: 1 addition & 1 deletion code/datums/storage/subtypes/implant.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@

/datum/storage/implant/New()
. = ..()
set_holdable(cant_hold_list = list(/obj/item/disk/nuclear))
set_holdable(cant_hold_list = list(/obj/item/disk/nuclear, /obj/item/badmin_stone)) //Monkestation Edit
2 changes: 1 addition & 1 deletion code/game/objects/items/storage/bags.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
atom_storage.max_total_storage = 30
atom_storage.max_slots = 30
atom_storage.set_holdable(cant_hold_list = list(/obj/item/disk/nuclear))
atom_storage.set_holdable(cant_hold_list = list(/obj/item/disk/nuclear, /obj/item/badmin_stone)) //Monkestation Edit
atom_storage.supports_smart_equip = FALSE
RegisterSignal(atom_storage, COMSIG_STORAGE_DUMP_POST_TRANSFER, PROC_REF(post_insertion))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@

to_buy.times++
uses -= to_buy.cost
gauntlet_flag = TRUE //Monkestation Edit
return TRUE

/// Purchases a wizard loadout [loadout] for [wizard].
Expand Down
14 changes: 9 additions & 5 deletions code/modules/mob/mob_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -348,11 +348,15 @@
*
* Automatic logging and uses poll_candidates_for_mob, how convenient
*/
/proc/offer_control(mob/M)
to_chat(M, "Control of your mob has been offered to dead players.")
if(usr)
log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.")
message_admins("[key_name_admin(usr)] has offered control of ([ADMIN_LOOKUPFLW(M)]) to ghosts")
/proc/offer_control(mob/M, log_stuff = TRUE)
//Monkestation Edit Begin
if(log_stuff)
to_chat(M, "Control of your mob has been offered to dead players.")
if(usr)
log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.")
message_admins("[key_name_admin(usr)] has offered control of ([ADMIN_LOOKUPFLW(M)]) to ghosts")
//Monkestation Edit End

var/poll_message = "Do you want to play as [M.real_name]?"
if(M.mind)
poll_message = "[poll_message] Job: [M.mind.assigned_role.title]."
Expand Down
3 changes: 2 additions & 1 deletion code/modules/spells/spell_types/jaunt/bloodcrawl.dm
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,8 @@

RegisterSignal(holder, COMSIG_MOVABLE_MOVED, PROC_REF(update_status_on_signal))
if(equip_blood_hands && iscarbon(jaunter))
jaunter.drop_all_held_items()
if(!jaunter.bloodcrawl_allow_items)
jaunter.drop_all_held_items()
// Give them some bloody hands to prevent them from doing things
var/obj/item/bloodcrawl/left_hand = new(jaunter)
var/obj/item/bloodcrawl/right_hand = new(jaunter)
Expand Down
Binary file added icons/obj/infinity.dmi
Binary file not shown.
8 changes: 8 additions & 0 deletions monkestation/code/datums/ert.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/datum/ert/revengers
roles = list(/datum/antagonist/ert/revenger/thor, /datum/antagonist/ert/revenger/hulk, /datum/antagonist/ert/revenger/cap)
leader_role = /datum/antagonist/ert/revenger/nano
teamsize = 4
opendoors = TRUE
rename_team = "Revengers"
mission = "Defend the Badmin Stones and their holders."
polldesc = "a Nanotrasen Revengers Team"
5 changes: 5 additions & 0 deletions monkestation/code/datums/mutations/hulk.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/datum/mutation/human/hulk/revenger
mutadone_proof = TRUE

/datum/mutation/human/hulk/revenger/on_life()
return
31 changes: 31 additions & 0 deletions monkestation/code/datums/status_effects/debuffs/badmin.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/datum/status_effect/badmin_stone
id = "badmin_stone"
status_type = STATUS_EFFECT_MULTIPLE
duration = -1
tick_interval = 10
alert_type = null
var/obj/item/badmin_stone/stone
var/next_msg = 0

/datum/status_effect/badmin_stone/on_creation(mob/living/new_owner, obj/item/badmin_stone/new_stone)
. = ..()
if(.)
stone = new_stone

/datum/status_effect/badmin_stone/Destroy()
stone = null
return ..()

/datum/status_effect/badmin_stone/tick()
var/has_other_stone = FALSE
if(istype(stone.loc, /obj/item/badmin_gauntlet))
return
for(var/obj/item/badmin_stone/badminstone in owner.get_contents())
if(badminstone != stone && !istype(badminstone.loc, /obj/item/badmin_gauntlet))
has_other_stone = TRUE
if(!has_other_stone)
return
if(world.time >= next_msg)
owner.visible_message("<span class='danger'>[owner]'s [pick("face", "hands", "arms", "legs")] bruises a bit...</span>", "<span class='userdanger'>Your body can't handle holding two badmin stones at once!</span>")
next_msg = world.time + rand(10 SECONDS, 25 SECONDS)
owner.adjustBruteLoss(4.5) //Starting at 7 damage for 2 stones, plus 4.5 damage per extra stone.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/obj/machinery/telecomms/ui_interact(mob/user)
if(isganymede(user))
to_chat(user, "<span class='warning'>Your enormous hands can't possibly fiddle with that!</span>")
return
return ..()
16 changes: 16 additions & 0 deletions monkestation/code/game/objects/effects/landmark.dm
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,19 @@
name = "Brig Physician"
icon = 'monkestation/icons/mob/landmarks.dmi'
icon_state = "Brig Physician"

/obj/effect/landmark/start/thanos
name = "thanos start"

/obj/effect/landmark/start/thanos/Initialize()
..()
GLOB.thanos_start += loc
return INITIALIZE_HINT_QDEL

/obj/effect/landmark/start/thanos_portal
name = "thanos portal"

/obj/effect/landmark/start/thanos_portal/Initialize()
..()
GLOB.thanos_portal += loc
return INITIALIZE_HINT_QDEL
6 changes: 6 additions & 0 deletions monkestation/code/game/objects/items/melee/baton.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/obj/item/melee/baton/attack(mob/M, mob/living/carbon/human/user)
if(isganymede(user))
user.visible_message("<span class='danger'>[user] accidentally crushes [src] in their hand!</span>")
qdel(src)
return
return ..()
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,33 @@
category = "Offensive"
cost = 2

/datum/spellbook_entry/summon_mjollnir/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy = TRUE)
. = ..()
user.worthiness += 5

/datum/spellbook_entry/summon_mjollnir/refund_spell(mob/living/carbon/human/user, obj/item/spellbook/book)
. = ..()
user.worthiness -= 5

/datum/spellbook_entry/smite
name = "Smite"
desc = "Allows you to call in a favor from the gods upon your foe."
spell_type = /datum/action/cooldown/spell/pointed/smite
category = "Offensive"

/datum/spellbook_entry/item/badmin_gauntlet
name = "Badmin Gauntlet"
desc = "A gauntlet capable of holding the Badmin Stones. <b>Wearing this will trigger a war declaration!</b>. \
Before you wear it, you can refund it by hitting it against the spellbook. \
<b>You cannot buy this if you have bought anything else!</b> \
Requires 27+ crew."
item_path = /obj/item/badmin_gauntlet
category = "Rituals"
cost = 10

/datum/spellbook_entry/item/badmin_gauntlet/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy)
. = ..()
book.uses = 0

/datum/spellbook_entry/item/badmin_gauntlet/can_buy(mob/living/carbon/human/user, obj/item/spellbook/book)
return ..() && !book.gauntlet_flag && (GLOB.Debug2 || GLOB.joined_player_list.len >= 27)
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/obj/item/spellbook
var/gauntlet_flag = FALSE

/obj/item/spellbook/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/badmin_gauntlet))
var/obj/item/badmin_gauntlet/badmingauntlet = O
if(badmingauntlet.locked_on)
to_chat(user, "<span class='notice'>You've put the gauntlet on already. No turning back now.</span>")
return
to_chat(user, "<span class='notice'>On second thought, wiping out half the universe is possibly a bad idea. You refund your points.</span>")
uses += 10
for(var/datum/spellbook_entry/item/badmin_gauntlet/badmin_gauntlet_entry in entries)
if(!isnull(badmin_gauntlet_entry.limit))
badmin_gauntlet_entry.limit++
qdel(O)
return
return ..()
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/obj/machinery/atmospherics/components/binary/pump/CtrlClick(mob/user)
if(isganymede(user))
to_chat(user, "<span class='danger'>\The [src] is too small for your big hands to adjust!</span>")
return
return ..()

/obj/machinery/atmospherics/components/binary/pump/AltClick(mob/user)
if(isganymede(user))
to_chat(user, "<span class='danger'>\The [src] is too small for your big hands to adjust!</span>")
return
return ..()

/obj/machinery/atmospherics/components/binary/pump/ui_interact(mob/user, datum/tgui/ui)
if(isganymede(user))
to_chat(user, "<span class='danger'>\The [src] is too small for your big hands to adjust!</span>")
return
return ..()
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/obj/machinery/atmospherics/components/binary/volume_pump/CtrlClick(mob/user)
if(isganymede(user))
to_chat(user, "<span class='danger'>\The [src] is too small for your big hands to adjust!</span>")
return
return ..()

/obj/machinery/atmospherics/components/binary/volume_pump/AltClick(mob/user)
if(isganymede(user))
to_chat(user, "<span class='danger'>\The [src] is too small for your big hands to adjust!</span>")
return
return ..()

/obj/machinery/atmospherics/components/binary/volume_pump/ui_interact(mob/user, datum/tgui/ui)
if(isganymede(user))
to_chat(user, "<span class='danger'>\The [src] is too small for your big hands to adjust!</span>")
return
return ..()
95 changes: 95 additions & 0 deletions monkestation/code/modules/clothing/outfits/ert.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
/datum/outfit/revenger
name = "Revenger"
uniform = /obj/item/clothing/under/syndicate/tacticool
shoes = /obj/item/clothing/shoes/combat/swat
gloves = /obj/item/clothing/gloves/combat
ears = /obj/item/radio/headset/headset_cent/alt
back = /obj/item/storage/backpack/ert
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
id = /obj/item/card/id/ert
r_pocket = /obj/item/reagent_containers/hypospray/combat

/datum/outfit/revenger/post_equip(mob/living/carbon/human/H, visualsOnly)
. = ..()
if(visualsOnly)
return
if(name)
H.fully_replace_character_name(null, name)
var/obj/item/card/id/W = H.wear_id
W.icon_state = "centcom"
W.assignment = "Revenger"
W.registered_name = H.real_name
W.update_label()
H.apply_status_effect(/datum/status_effect/agent_pinpointer/revenger)
H.gender = MALE
ADD_TRAIT(H, TRAIT_TESLA_SHOCKIMMUNE, type)

/datum/outfit/revenger/hulk
name = "Hulk"
uniform = /obj/item/clothing/under/shorts/purple

/datum/outfit/revenger/hulk/post_equip(mob/living/carbon/human/H, visualsOnly)
. = ..()
if(visualsOnly)
return
if(H.dna)
H.dna.add_mutation(/datum/mutation/human/hulk/revenger)
H.update_body_parts()
var/datum/martial_art/wrestling/wrestling = new
wrestling.teach(H)

/datum/outfit/revenger/nano
name = "Nano Guy"
suit = /obj/item/clothing/suit/space/hardsuit/nano/nanoguy

/datum/outfit/revenger/nano/post_equip(mob/living/carbon/human/H, visualsOnly)
. = ..()
if(visualsOnly)
return
var/obj/item/organ/internal/cyberimp/chest/reviver/reviver = new
reviver.Insert(H)
var/obj/item/organ/internal/cyberimp/brain/anti_stun/cns = new
cns.Insert(H)
var/obj/item/organ/internal/cyberimp/arm/nanoguy/nano_r = new
nano_r.Insert(H)
var/obj/item/organ/internal/cyberimp/arm/nanoguy/nano_l = new
nano_l.zone = BODY_ZONE_L_ARM
nano_l.SetSlotFromZone()
nano_l.Insert(H)

/datum/outfit/revenger/captain
name = "Captain Nanotrasen"
l_pocket = /obj/item/shield/energy/bananium

/datum/outfit/revenger/captain/post_equip(mob/living/carbon/human/H, visualsOnly)
. = ..()
if(visualsOnly)
return
H.worthiness = 1
var/datum/martial_art/cqc/cqc = new
cqc.teach(H)

/datum/outfit/revenger/thor
name = "Thor"
suit = /obj/item/clothing/suit/armor/thor

/datum/outfit/revenger/thor/post_equip(mob/living/carbon/human/H, visualsOnly)
. = ..()
if(visualsOnly)
return
H.worthiness = 100
if(prob(50))
var/obj/item/reagent_containers/cup/glass/bottle/beer/beer = new(get_turf(H))
H.put_in_hands(beer)
H.nutrition = NUTRITION_LEVEL_FAT //Lmao
H.facial_hairstyle = "Broken Man"
else
H.facial_hairstyle = "Long"

var/datum/action/cooldown/spell/conjure_item/summon_mjollnir/summon_mj = new
summon_mj.spell_requirements = NONE
summon_mj.Grant(H)

var/datum/action/cooldown/spell/pointed/projectile/lightningbolt/lightning = new
lightning.spell_requirements = NONE
lightning.Grant(H)
Loading
Loading