8 Commits

Author SHA1 Message Date
chompstation-ci[bot]
bb9e724bd2 Automatic changelog for PR #12061 [ci skip] 2025-12-01 10:56:16 +00:00
chompstation-ci[bot]
26d30d3ad7 Automatic changelog for PR #12060 [ci skip] 2025-12-01 10:55:54 +00:00
Victor Zisthus
3c2c33eafe POI tweaks (#12061) 2025-12-01 11:55:39 +01:00
chompstation-ci[bot]
ec176ca8f8 Automatic changelog for PR #12045 [ci skip] 2025-12-01 10:55:34 +00:00
chompstation-ci[bot]
ca6fd0a199 Automatic changelog for PR #12046 [ci skip] 2025-12-01 10:55:25 +00:00
Guti
e8ba2fc63d Fixes not being able to scoop up snow (#12060) 2025-12-01 11:55:07 +01:00
CHOMPStation2StaffMirrorBot
683448fd50 [MIRROR] Hotfix for species whitelist command (#12046)
Co-authored-by: Selis <12716288+ItsSelis@users.noreply.github.com>
2025-12-01 11:54:48 +01:00
FluffMedic
e8ba2765ac Tyr Update (#12045) 2025-12-01 11:54:31 +01:00
27 changed files with 7332 additions and 6645 deletions

View File

@@ -65,7 +65,7 @@
/turf/simulated/floor/outdoors/snow/sif/planetuse/attackby(var/obj/item/W, var/mob/user)
if(istype(W, /obj/item/shovel))
to_chat(user, span_notice("You begin to remove \the [src] with your [W]."))
if(do_after(user, 4 SECONDS * W.toolspeed))
if(do_after(user, 4 SECONDS * W.toolspeed, src))
to_chat(user, span_notice("\The [src] has been dug up, and now lies in a pile nearby."))
new /obj/item/stack/material/snow(src)
demote()
@@ -76,7 +76,7 @@
/turf/simulated/floor/outdoors/snow/sif/planetuse/attack_hand(mob/user as mob)
visible_message("[user] starts scooping up some snow.", "You start scooping up some snow.")
if(do_after(user, 1 SECOND))
if(do_after(user, 1 SECOND, src))
var/obj/S = new /obj/item/stack/material/snow(user.loc)
user.put_in_hands(S)
visible_message("[user] scoops up a pile of snow.", "You scoop up a pile of snow.")

View File

@@ -455,7 +455,7 @@ GLOBAL_LIST_EMPTY(pending_discord_registrations)
message.text = "Error, job \"[role]\" is not a whitelist job."
return message
if(kind == "species")
if(role in GLOB.playable_species)
if(!(role in GLOB.playable_species))
message.text = "Error, invalid species entered. Check spelling and capitalization."
return message
if(!(role in GLOB.whitelisted_species))

View File

@@ -0,0 +1,6 @@
author: "FluffMedic"
delete-after: True
changes:
- rscadd: "More areas to explore on Tyr. New mini-boss, encrypted lore, and some other weird stuff."
- balance: "Several Tyr mobs nerfed. Tyr firearms condensed into one"
- bugfix: "Improves some code bits, and some unintended effects"

View File

@@ -0,0 +1,4 @@
author: "CHOMPStation2StaffMirrorBot"
delete-after: True
changes:
- bugfix: "species whitelist commands for the bot now properly work and do not throw an invalid species error"

View File

@@ -0,0 +1,4 @@
author: "Guti"
delete-after: True
changes:
- bugfix: "Fixed snow not being able to be scooped up"

View File

@@ -0,0 +1,4 @@
author: "VictorZisthus"
delete-after: True
changes:
- maptweak: "Fixes fire alarms in some POI's reporting to the station when triggered."

View File

@@ -0,0 +1,26 @@
/datum/symptom/blobspores/agate
name = "Agate Infection"
desc = "This symptom causes the host to produce blob spores, which will leave the host at the later stages, and if the host dies, all of the spores will erupt from the host at the same time, while also producing a blob tile."
stealth = 15
resistance = 15
stage_speed = -2
transmission = 15
level = 9
severity = 3
naturally_occuring = FALSE
symptom_delay_min = 20 SECONDS
symptom_delay_max = 40 SECONDS
/datum/symptom/blobspores/agate/pop(datum/disease/advance/A, mob/living/M)
if(!A || !M)
return
var/list/blob_options = list(/obj/structure/blob/normal)
if(factory_blob)
blob_options += /obj/structure/blob/factory
if(strong_blob)
blob_options += /obj/structure/blob/shield
if(node_blob)
blob_options += /obj/structure/blob/node
new /obj/structure/blob/core/living_agate(M.loc)
M.visible_message(span_danger("A huge mass of blob and blob spores burst out of [M]!"))

View File

@@ -0,0 +1,5 @@
/datum/disease/advance/agate_rot/New(process = 1, datum/disease/advance/D, copy = 0)
if(!D)
name = "Agate Corruption"
symptoms = list(new /datum/symptom/blobspores/agate, /datum/symptom/confusion, /datum/symptom/stimulant, /datum/symptom/heal/water)
..(process, D, copy)

View File

@@ -468,6 +468,20 @@
scavanging is to be done at that site."
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/fossiltank
name = "final desgination"
icon_state = "old_disc_eclipse"
catalogue_data = list(/datum/category_item/catalogue/anomalous/fossil_tank)
/datum/category_item/catalogue/anomalous/fossil_tank
name = "Rolling Crematorium"
desc = "Station Point - Lost\
Attackers - The Terrain\
Leader - Nonfunctional\
Objective - Eliminate all hostiles\
Awaiting further instruction."
value = CATALOGUER_REWARD_HARD
/obj/item/material/barbedwire/plastic/active
anchored = 1
@@ -482,166 +496,257 @@
anchored = 1
icon_state = "barbedwire-out"
/obj/item/prop/tyrlore/reddisc
name = "red tyrian data disc"
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyr_red)
color = "#FFFFFF"
/obj/item/prop/tyrlore/acid_boss
name = "tyrian expirment data disc one"
catalogue_data = list(/datum/category_item/catalogue/anomalous/acid_boss)
/datum/category_item/catalogue/anomalous/tyr_red
name = "Precursor Object - Tyr Data Disc Red"
desc = "The following data has been corrupted. \
<br><br>\
oslra yclce hietg hotfsaun ifev undhdre htiytr veesn.\
No huftrer ritrdecisev cevredive. \
notencnidoc tihw fof pantel posd lsot wot tuhanosd cslcey..\
leif sgisn lbeow tslo gilans reorsr.\
ireaneregnot dops wolakrbe.. \
rsoescure gaklicn. \
cenictomon To lawdorr.\
tatepmt treeh hudnedr senevty tow."
/datum/category_item/catalogue/anomalous/acid_boss
name = "Tyr Expirment Data - Corrupted Data One"
desc = "18106832146282688032166282183282421432861268324012244216621432241 \
8406414821682161862321660328242143228184848188616622034321232606414241612 \
4848803226146016206214263264481262823282421282328616484832206818863286421 \
4623216628268182610241426328218324214128252324812601468603218683212628082 \
4216622032824212823222106862605232861648483214622010482832824214321462146 \
8208032286818403216823212622632206818863212603212326814601048823632861432 \
1268143260821648483286186846166220321862321682523222108232168232148864126 \
2266032681264162648803216623260106248162042825232401662186832481260146860 \
3226186254823242106882321682523212622632163212403260106814328616824232801 \
8106832281062261662203212622632601064641868823286143224181048263226183260 \
1832401024423240186814363216401220166214523218106832261664481840122480321 \
2201462826032266818646416622032601840143260141426603218282832128232181068 \
3212484816146032421840146034328242143284166214603286181048263214628212622 \
0481432824214166832166228681260826810248210681452321262263216283282421480 \
3212828214406482142632824214324018608232142828142482168414324014824218266 \
0321828326814401884124852328242148032441060823240122614321682328618686014 \
3632221482821468328014825232861432241262324012461432824214322848186812326 \
4681826102414321224162652322612401220166220321262808242166220321268181062 \
2632824214326448126282363216326814206814823232261280328618623432261240403 \
2241862821460823432601832241848263432601832144064828034328616484832201862 \
14343260826816622032821020343240106082321822148034"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/purpledisc
name = "purple tyrian data disc"
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyr_purple)
color = "#530E31"
/obj/item/prop/tyrlore/sonic_boss
name = "tyrian expirment data disc two"
catalogue_data = list(/datum/category_item/catalogue/anomalous/sonic_boss)
/datum/category_item/catalogue/anomalous/tyr_purple
name = "Precursor Object - Tyr Data Disc Purple"
desc = "The following data has been corrupted. \
<br><br>\
tapa'cnsi lgo, 1 ohur rebofe rcoy elpa.\
I ma ont yerlal rues wtah yeht tawn ee to ptu ni tihs. \
ts'i tjsu gipretena tginsh e'vi yarelad sida.\
amirpexnlet irwnig is gongi yirwahe.\
varesel crew memebers are filling ill. \
But the elevators are holding strong. \
And stable power is, well, stable.\
I hope for a good dream."
/datum/category_item/catalogue/anomalous/sonic_boss
name = "Tyr Expirment Data - Corrupted Data Two"
desc = "1842322614126832204818681618106032481412261468\
42188632824214326082126860322048188632226816204282146832122218841432801810683242141226\
42188632824214322816144826603222481818403216623280181068326082141226\
42188632801810683212684060326814122442321810823212622632206812606432124848\
18106832124848161460321262263228681614622660\
2468106042142632106226146832801810683242141448\
401280321632824268188632408032601810483212861280\
281868328242143226128032801810324812803210622614683282421860143280181032601064646814606032"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/greendisc
name = "green tyrian data disc"
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyr_green)
color = "#530E31"
/obj/item/prop/tyrlore/shield_boss
name = "tyrian expirment data disc three"
catalogue_data = list(/datum/category_item/catalogue/anomalous/shield_boss)
/datum/category_item/catalogue/anomalous/tyr_green
name = "Precursor Object - Tyr Data Disc Green"
desc = "Final mortality count before cryo leap.\
29,895 illness\
113,615 workplace injuries\
20,105 off planet\
300 to be determined."
/datum/category_item/catalogue/anomalous/shield_boss
name = "Tyr Expirment Data - Corrupted Data Three"
desc = "24106868146282326042161448261662203216603212623214886414681640146282128216186\
2328616824232824214321260826812483260141234328614321268143212224814328218326014622632\
6018401432646818441424821648146032821832824214321222806060523242188614841468328242146\
8143216603212324816401682322818683242188632401024423286143224126232601462263432261014\
3282183248164016821282161862603212622632241862826818486052321822441424826032182832481\
2682014321462181020423260160214322412626218823222143260146282343240126280328242141868\
1602143282421660328616484832124848188632401448141432241840221282126282603282183212248\
2321260321232241810628214683282183282421660326214863210621682343286143224186224106832\
8616824232601024423260821282144014628260523242188614841468328614324212841432188242146\
8321062168260321064321862321828281468166220328218322410484832824214326414608260328242\
128232128282144064823282183224481216403218106832821682481434"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/basicflora
name = "tyrian flora data disc"
color = "#FF66CC"
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyre_basicflora)
/obj/item/prop/tyrlore/crystal_boss
name = "tyrian expirment data disc four"
catalogue_data = list(/datum/category_item/catalogue/anomalous/crystal_boss)
/datum/category_item/catalogue/anomalous/tyre_basicflora
name = "Tyr Data - Flora Expirments"
desc = "Energy Siphon Unit Attempt\
Damage is retained until enough energy is accured\
Subject grows with the acculmated energy\
Transfering flora program from offense division to sabatoge\
Utility to be determined."
/datum/category_item/catalogue/anomalous/crystal_boss
name = "Tyr Expirment Data - Corrupted Data Four"
desc = "181068328618684614686032126814322014828216622032681886268052328242681886166220\
32604012484832646818821460826032122012166260823218106832204818681618106032401862126824\
42343264141864481432126046166220326610146082161862603212221810823282421860143286421832\
4212841432221414623224421860146234328242148068143214841462322218824214681662203240145\
23212622632163212403244106082324214681432821832681062328242143248126226602412641468321\
2622632146220166214603632168414322214146232401884166220324080322610821614603282183262\
16204282821640145232221082321484146232824214623260184014321626161882603224184014321262\
26324212681260603240143432163286181048263248164614328218326814661014608232601228148280\
32681216481662206032281868328242143228101448326082186812201452322214241210601432824214\
60143264141260126282603240162042823282688032821832641060423240143216623218824214688616601436"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/basicshield
name = "tyrian shield data disc"
color = "#530E31"
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyre_basicshield)
/obj/item/prop/tyrlore/gravity_boss
name = "tyrian expirment data disc four"
catalogue_data = list(/datum/category_item/catalogue/anomalous/gravity_boss)
/datum/category_item/catalogue/anomalous/tyre_basicshield
name = "Tyr Data - Barrier Expirments"
desc = "Barrier Unit Attempt\
Barrier is capable of limiting damage\
However the barrier will break under repeated stress\
Rebuilding the barrier is swift but costly\
Attempts to be made to incoperate Astral Sea warping."
/datum/category_item/catalogue/anomalous/gravity_boss
name = "Tyr Expirment Data - Corrupted Data Five"
desc = "206812841682805232123228186824143218283262128210681432824212823216603212488612\
06032821020201662203218623210603432801482326018324012628032126814328218183286141246328\
21832206812606432824214322810484832148882146282321828321682603264188614683432124848321\
8283218106832646814841618106032641282161462826052321248483224681040224814321062261468\
62141282423216826032206812606434328242141668328616484860321268143286141246523222182616\
14603228184848188616622032824214166832401662263432821832646818841432824216605232163242\
12841432261424162614263282183210622614682018321232606414241612481602142632826814128240\
14628234321632861648483248141226321060328218321232621486321468125232241862826818484816\
62203282421432281868241460321828326212821068143228186832181068322048186816181060324018621268244236"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/advanceshield
name = "tyrian shield 2 data disc"
color = "#FF0000"
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyre_advanceshield)
//hivebot discs
/obj/item/prop/tyrlore/gatekeeper
name = "tyrian data disc one"
catalogue_data = list(/datum/category_item/catalogue/anomalous/gatekeeper)
/datum/category_item/catalogue/anomalous/tyre_advanceshield
name = "Tyr Data - Astral Barrier Expirments"
desc = "barrier Unit Attempt\
Low class damage is vanished\
Higher speed and energized projectiles bypass the barrier\
Unbonded Astral Sea projects slightly damaged due to this expirment\
Swapping Astral Sea useage from defensive to offensive\
Gravity to be utlized for further defensive expirments."
/datum/category_item/catalogue/anomalous/gatekeeper
name = "Tyr Data - Corrupted Data One"
desc = "28681860823260481414643832401248281062248216186216622032\
26142814626014321864146812821618623832186248166214\
122012821432646818261024821618623832186248166214\
681460181068241432646818261024821618623832186248166214\
6016206212481468383226124012201426\
24186814383222122648803226124012201426\
286818608232821640143832621420128216841432621662143282421810601262263282426814143242106226681426326014841462828032601688321220146034\
60146226166220322616608268146060326016206212486034\
602412626216622032281868326016206212486034\
1468681868343228186814162062326016206212486032261482142482142634321462821468326016142014324018261434"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/basicsonic
name = "tyrian sonic data disc"
color = "#CCCCFF"
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyre_basicsonic)
/obj/item/prop/tyrlore/gatekeeper
name = "tyrian data disc one"
catalogue_data = list(/datum/category_item/catalogue/anomalous/gatekeeper)
/datum/category_item/catalogue/anomalous/tyre_basicsonic
name = "Tyr Data - Shockwave Expirments"
desc = "Enforcer Unit Attempt\
Success upon creating a shockwave capable of throwing indivuals\
Damage is limited\
Force spreads out, launching subjects\
Further energy to be added before hand held weaponery expirments."
/datum/category_item/catalogue/anomalous/gatekeeper
name = "Tyr Data - Corrupted Data One"
desc = "28681860823260481414643832401248281062248216186216622032\
26142814626014321864146812821618623832186248166214\
122012821432646818261024821618623832186248166214\
681460181068241432646818261024821618623832186248166214\
6016206212481468383226124012201426\
24186814383222122648803226124012201426\
286818608232821640143832621420128216841432621662143282421810601262263282426814143242106226681426326014841462828032601688321220146034\
60146226166220322616608268146060326016206212486034\
602412626216622032281868326016206212486034\
1468681868343228186814162062326016206212486032261482142482142634321462821468326016142014324018261434"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/basicpower
name = "tyrian power data disc"
color = "#530E31"
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyre_basicpower)
/obj/item/prop/tyrlore/shotgun
name = "tyrian data disc two"
catalogue_data = list(/datum/category_item/catalogue/anomalous/shotgun)
/datum/category_item/catalogue/anomalous/tyre_basicpower
name = "Tyr Data - Liquid Flame Generators"
desc = "Utilization of underground liquid flames is succesful\
Power is stable\
Capable of further growth\
Further expansion recomended\
Awaiting approval."
/datum/category_item/catalogue/anomalous/shotgun
name = "Tyr Data - Corrupted Data Two"
desc = "461414643228122416481682803260142410681426\
1448164016621282143212484832166282681026146860\
60184014186214\
10642612821662203264128268184832641282821468626032\
6468164016622032126082681248326014123244121062826034\
42144864\
601462261662203218108232261660826814606032284812681460\
602412626216622032281868322814484818862818484634\
4210688260\
28122416481682803266101248168280321222806040124832\
681466101460821662203214841224\
126280186214\
26148214248216622032106246621886623260162062128210681460\
646814641268143228186832221282824814\
481660821462166220"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/ants
name = "tyrian ants data disc"
color = "#993300"
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyre_ants)
/obj/item/prop/tyrlore/engi_boss
name = "tyrian data disc three"
catalogue_data = list(/datum/category_item/catalogue/anomalous/engi_boss)
/datum/category_item/catalogue/anomalous/tyre_ants
name = "Tyr Data - Living Mines Expirments"
desc = "Success Living Mines\
Minerants\
Insect like creatures capable of reproducing metallic and gemstone structures\
Highly useful for gemstone production\
Altering for wartime useage approved."
/datum/category_item/catalogue/anomalous/engi_boss
name = "Tyr Data - Corrupted Data Three"
desc = "181068326814601412682442326414681618263242126\
03224186224481026142634328616824232168252328614326218\
86324662188632824214322818484818861662203432861432401\
28032481666101626160214328242143212201282143228186832\
28106882421468322418622610248216841682803432126464488\
01662203228106882421468324214128252321868326010224414\
24821662203282183212608268124832601412328214406414681\
66220523286164848322810688242146832166224681412601432\
16826032241264122416828034324218861484146832824216603\
28616484832401246143212628032604616623224186282122482\
32861682423282421432481666101626321232206814128214683\
24212021268263432168254603260102020146082142632821832\
12488612806032221432861412681662203212326010168232864\
21648608232861682421662328242143284162416621682803218\
28321462146820160214263212201282143432824214324818622\
03282146840321428281424826032421284143280148232821832\
22143260821026161426322210823260421868823282146840321\
66032123284126816148280321828322210686260523282421432\
86186860823224126014328242106032281268322214166220321\
23284162482164032241884146814263216623268126246328322\
210686260343282421480324212841432801482328218-4214803\
28642128232126814328018103226181662203216623240803218\
28281624143632163212403268142418682616622032126232146\
28268803228186832824214321662821468626036328642128252\
32163226162662548232261832126280\
641886146832601064644880383260102828162416146282\
861668166220383226124012201426\
28122416481682803832186248166214"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/drones
name = "tyrian drone data disc"
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyre_drones)
/obj/item/prop/tyrlore/meteor_boss
name = "tyrian data disc four"
catalogue_data = list(/datum/category_item/catalogue/anomalous/meteor_boss)
/datum/category_item/catalogue/anomalous/tyre_drones
name = "Tyr Data - Drones"
desc = "Success\
Drone Data Aquired\
Allies none the wise\
Further data siphoning to contunie\
Remodel based off their blueprints."
/datum/category_item/catalogue/anomalous/meteor_boss
name = "Tyr Data - Corrupted Data Four"
desc = "16324212821432824216603228122416481682803432601832221868166220321662601626145232621882421\
6622032221082326812166232186832601262263218108260162614343280181032861810482632824216624632861682\
4232181068326448126214826042126416622032861432861810482632421284143212322214828214683264481262148\
2322280326218863632608210641626326414122414328268141282803260821064162616828034328614484832163212\
4032221416622032826812626028146868142632286818403244126216821868161248322610821614603282183212623\
2148864146816401462821248326468184414248252324218641662203216823220181460328614484834\
8614128242146832281868241260823832601062628032861682423212322268106042321828326012622660821868406034"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/fossiltank
name = "final desgination"
icon_state = "old_disc_eclipse"
catalogue_data = list(/datum/category_item/catalogue/anomalous/fossil_tank)
/obj/item/prop/tyrlore/swarm_boss
name = "tyrian data disc five"
catalogue_data = list(/datum/category_item/catalogue/anomalous/swarm_boss)
/datum/category_item/catalogue/anomalous/fossil_tank
name = "Rolling Crematorium"
desc = "Station Point - Lost\
Attackers - The Terrain\
Leader - Nonfunctional\
Objective - Eliminate all hostiles\
Awaiting further instruction."
/datum/category_item/catalogue/anomalous/swarm_boss
name = "Tyr Data - Corrupted Data Five"
desc = "4016606016186232681464186882343286143242128414326010242414606028104848803226188662\
481812261426328242143260244214401282162460321828321810683212484816146032261068166220328242\
143224186228146814622414343282421432126060126060166212821618623212828214406482322616263268\
121660143282421432124812684060523228186882106212821448803262183218621432824218102042823282\
183224421424463216622818322668168414603432181068328214124032421260326082126882142632821832\
246814128214321810683218866232841468601618623218283282421416683268182218826052321248824218\
102042321862143242126032601020201460821426321232641424104816126832261460162062343212322668\
186214328242128232226814124660321828283216628218326040124848146832266818621460321064186232\
221416622032261240122014263432163286181048263260102020146082322810622616622032166282183282\
421660321864146812821618623212622632122626328242143228106224821618623282183226148418106832\
401282146816124832601832168232241810482632681464481624128214321682601448283222148018622632\
281068824214683240126060343244106082321640122016621452328614322668186432123228148632182832\
824216603218282832128232181068321248481614603222126014605232824214803286181048263222143218\
841468681062322280324816204282326816601434321262808612805232261664481840122480321220146282\
32601620621662203218282834\
2218268052324016622632126226326018104834322818683280181034322048186816181060324018621268244234"
value = CATALOGUER_REWARD_HARD
/obj/item/prop/tyrlore/medical_boss
name = "tyrian data disc five"
catalogue_data = list(/datum/category_item/catalogue/anomalous/medical_boss)
/datum/category_item/catalogue/anomalous/medical_boss
name = "Tyr Data - Corrupted Data Six"
desc = "8242146814321660326218326010244232824216622032126032123260641268465232168254603244106082328612244632608210282832401226143210643222803224421068244232281848466034\
22108232864212823216283282421480328614681432186232821832601840148242166220?322616266254823280181032601414328642128232824212823214886414681640146282322616263282421432188242146832261280?\
82421282546032441060823282421432681440621262826032182832824214322218268032861432106014263432824214324016622632861432608216822442328218328242141668603432168232121662548232681412485232441060823228681220401462826032182832864212823286126032646818206812404014263216628218328242141668324016622632284814604234\
1632466218865232163246621886523222108232601840148242166220322814144860328668186220321222181082343260184014824216622032121662548232681620428234\
184232241082328242128232181082523268144014402214683286421282324212646414621426328218328242143248126082326414686018623282421432188414686014146832241210204282328212484616622032481646143282421282?\
8014124252328242148032401226143228186832123220181826322010126826324218106226343216324218641432861432601414328242144032122012166234\
8018103218282832801810683240142660?328018103226181662203282421282322848166432284818646416622032824216622032122012166234\
16328218482632801810523216321216625482328212461662203282421440343214841468326016622414328614321662244810261426321220128214523216322412623228141448326018401482421662203286162020481662203216626016261432401436\
1842328018105468143216406418606016224814343216825460321248483216623280181068324214122634"
value = CATALOGUER_REWARD_HARD
/obj/item/paper/tyr_hint
name = "Data Decoding"
info = "Signals from outside the building is sparse, but we need to deal with whatever scraps we can get. Every two numbers seems to correlate with a symbol, or letter. 32 is space. 12 is A? Theorizing all 1X are vowels. L is 48."

View File

@@ -0,0 +1,60 @@
/obj/structure/blob/core/living_agate
desired_blob_type = /datum/blob_type/living_agate
/datum/blob_type/living_agate
name = "agate hive"
desc = "A tide of precursor technolgy gone wrong, energerized agate taking on an aggressive desire to spread and consume."
effect_desc = "Spreads much faster than average"
ai_desc = "genocidal"
difficulty = BLOB_DIFFICULTY_SUPERHARD // Fastest spread of them all and has snowballing capabilities.
color = "#FF3300"
complementary_color = "#FF5125"
spread_modifier = 1.0
slow_spread_with_size = FALSE
ai_aggressiveness = 95
can_build_resources = TRUE
attack_message = "The tide tries to swallow you"
attack_message_living = ", and you feel your skin dissolve"
attack_message_synth = ", and your external plating dissolves"
faction = FACTION_TYR
damage_type = SEARING
armor_check = "melee"
armor_pen = 30
damage_lower = 35
damage_upper = 35
brute_multiplier = 0.5
burn_multiplier = 0.5
can_build_factories = TRUE
can_build_resources = TRUE
can_build_nodes = TRUE
ranged_spores = TRUE
spore_range = 7
spore_projectile = /obj/item/projectile/energy/eclipse/tyrjavelin
spore_type = /mob/living/simple_mob/blob/spore/infesting
/datum/blob_type/living_agate/on_received_damage(var/obj/structure/blob/B, damage, damage_type, mob/living/attacker)
if(damage > 0 && attacker && get_dist(B, attacker) <= 1)
B.visible_message(span_danger("The [name] retaliates, lashing out at \the [attacker]!"))
B.blob_attack_animation(attacker, B.overmind)
attacker.blob_act(B)
return ..()
/datum/blob_type/living_agate/on_attack(obj/structure/blob/B, mob/living/victim, def_zone)
victim.electrocute_act(10, src, 1, def_zone)
victim.stun_effect_act(0, 40, BP_TORSO, src, electric = TRUE)
/datum/blob_type/living_agate/on_spore_death(mob/living/simple_mob/blob/spore/S)
if(S.is_infesting)
return // Don't make blobs if they were on someone's head.
var/turf/T = get_turf(S)
var/obj/structure/blob/B = locate(/obj/structure/blob) in T
if(B) // Is there already a blob here? If so, just heal it.
B.adjust_integrity(10)
else
B = new /obj/structure/blob/normal(T, S.overmind) // Otherwise spread it.
B.visible_message(span_danger("\A [B] forms on \the [T] as \the [S] bursts!"))

View File

@@ -97,9 +97,11 @@
special_attack_max_range = 2
special_attack_cooldown = 10 SECONDS
/mob/living/simple_mob/animal/tyr/mineral_ants/copper/do_special_attack(atom/A)
empulse(src.loc, 1, 2, 3, 4)
playsound(src, 'sound/weapons/Egloves.ogg', 75, 1)
/mob/living/simple_mob/animal/tyr/mineral_ants/copper/bullet_act(obj/item/projectile/P)
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
visible_message(span_cult("[P] seems ineffective!."))
else
..()
/mob/living/simple_mob/animal/tyr/mineral_ants/agate //rushes at you and explodes
name = "agate metal ant"

View File

@@ -22,11 +22,10 @@
/mob/living/simple_mob/mechanical/mecha/eclipse/do_special_attack(atom/A)
bullet_heck(A, 3, 3)
/mob/living/simple_mob/mechanical/mecha/eclipse/bullet_act(obj/item/projectile/P) //removal of E net cheese
/mob/living/simple_mob/mechanical/mecha/eclipse/hitby(obj/item/projectile/P) //removal of E net cheese
if(P == /obj/item/projectile/beam/energy_net)
return
else
..()
..()
/datum/ai_holder/simple_mob/intentional/three_phases
use_astar = TRUE
@@ -49,3 +48,9 @@
else
holder.a_intent = I_HURT
/datum/ai_holder/simple_mob/intentional/three_phases/no_movement
/datum/ai_holder/simple_mob/intentional/three_phases/no_movement/move_once()
return

View File

@@ -0,0 +1,106 @@
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr
name = "ai control center"
desc = "A large, very important looking ai. It sparks as it moves to attacks."
icon_state = "powertower"
icon_living = "powertower"
faction = FACTION_TYR
movement_cooldown = 10
size_multiplier = 2
maxHealth = 500
health = 500
wreckage = /obj/item/prop/tyrlore/gatekeeper
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases/no_movement
anchored = 1
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100)
loot_list = list(/obj/item/tool/wirecutters/hybrid/alien = 10,
/obj/item/tool/wrench/hybrid/alien = 10,
/obj/item/tool/crowbar/hybrid/alien = 10,
/obj/item/tool/screwdriver/hybrid/alien = 10,
/obj/item/pickaxe/diamonddrill/alien = 10,
/obj/item/melee/energy/sword/dualsaber = 10,
/obj/item/shield_projector/rectangle/automatic/tyrbarrier = 0.1,
/obj/item/stock_parts/scanning_module/omni = 80,
/obj/item/stock_parts/micro_laser/omni = 80,
/obj/item/stock_parts/capacitor/omni = 80,
/obj/item/stock_parts/manipulator/omni = 80,
/obj/item/stock_parts/matter_bin/omni = 80,
/obj/item/stock_parts/scanning_module/hyper = 80,
/obj/item/stock_parts/micro_laser/hyper = 80,
/obj/item/stock_parts/capacitor/hyper = 80,
/obj/item/stock_parts/manipulator/hyper = 80,
/obj/item/stock_parts/matter_bin/hyper = 80,
)
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr/do_special_attack(atom/A)
. = TRUE // So we don't fire a bolt as well.
switch(attackcycle)
if(1)
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, 2), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
if(2)
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 3, 15), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
if(3)
specialattackprojectile = /obj/item/projectile/energy/eclipse/tyrjavelin
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower
name = "ai control center"
desc = "A large, very important looking ai."
icon_state = "bluetower"
icon_living = "bluetower"
faction = FACTION_HIVEBOT
movement_cooldown = 10
size_multiplier = 2
maxHealth = 500
health = 500
wreckage = /obj/structure/loot_pile/surface/alien/engineering
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases/no_movement
anchored = 1
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 50, bio = 100, rad = 100)
loot_list = list(/obj/item/prop/alien/junk = 100,
/obj/item/multitool/alien = 30,
/obj/item/stack/cable_coil/alien = 30,
/obj/item/tool/crowbar/alien = 30,
/obj/item/tool/screwdriver/alien = 30,
/obj/item/weldingtool/alien = 30,
/obj/item/tool/wirecutters/alien = 30,
/obj/item/tool/wrench/alien = 30,
/obj/item/cell/device/weapon/recharge/alien = 40,
/obj/item/prop/nanoweave/terraformers = 50,
/obj/item/prop/nanoweave/cyan = 50,
/obj/item/prop/nanoweave/lime = 50,
/obj/item/perfect_tele/alien = 100
)
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower/do_special_attack(atom/A)
. = TRUE // So we don't fire a bolt as well.
switch(attackcycle)
if(1)
specialattackprojectile = /obj/item/projectile/beam/midlaser/shortrange
rng_cycle = rand(1,4)
direct_say("PROTOCOL: CROSS X.")
addtimer(CALLBACK(src, PROC_REF(star_burst), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
if(2)
specialattackprojectile = /obj/item/projectile/energy/wallbreaker/boss
rng_cycle = rand(1,4)
direct_say("PROTOCOL: PRECISION. SWEEP.")
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 25), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
if(3)
specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
rng_cycle = rand(1,4)
direct_say("PROTOCOL: DISCHARGE.")
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, rng_cycle, 15), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
if(4)
specialattackprojectile = /obj/item/projectile/arc/explosive_rocket/big
rng_cycle = rand(1,4)
Beam(A, icon_state = "r_beam", time = 1 SECOND, maxdistance = INFINITY)
direct_say("PROTOCOL: MISSILE.")
addtimer(CALLBACK(src, PROC_REF(singleproj), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0

View File

@@ -32,7 +32,7 @@
icon_state = "drop_marker"
mouse_opacity = 0 //no touching the attack
spread_range = 3
var/fuse_time = 2 SECONDS
var/fuse_time = 3.5 SECONDS
/obj/item/grenade/shooter/auto_explode/Initialize(mapload)
..()

View File

@@ -21,17 +21,15 @@
unacidable = TRUE
special_attack_min_range = 0
special_attack_max_range = 7
wreckage = /obj/item/prop/tyrlore/drones
wreckage = /obj/item/prop/tyrlore/gatekeeper
loot_list = list(/obj/item/gun/energy/curse_tyrshotgun = 30,
/obj/item/gun/energy/energyballchain = 30,
loot_list = list(/obj/item/gun/energy/tyr_rifle = 30,
/obj/item/tool/wirecutters/hybrid/alien = 30,
/obj/item/tool/wrench/hybrid/alien = 30,
/obj/item/tool/crowbar/hybrid/alien = 30,
/obj/item/tool/screwdriver/hybrid/alien = 30,
/obj/item/pickaxe/diamonddrill/alien = 30,
/obj/item/melee/energy/sword/dualsaber = 30,
/obj/item/shield_projector/rectangle/automatic/tyrbarrier = 1,
/obj/item/shield_projector/rectangle/automatic/tyrbarrier = 0.1,
/obj/item/stock_parts/scanning_module/omni = 80,
/obj/item/stock_parts/micro_laser/omni = 80,
/obj/item/stock_parts/capacitor/omni = 80,
@@ -51,7 +49,7 @@
desc = "A strange furball fused with plant life."
icon_state = "poison_boss"
icon_living = "poison_boss"
wreckage = /obj/item/prop/tyrlore/basicflora
wreckage = /obj/item/prop/tyrlore/acid_boss
projectiletype = /obj/item/projectile/bullet/astral_blade
specialattackprojectile = /obj/item/projectile/energy/neurotoxin/toxic/tyr_flora
var/regeneration_strength = -30
@@ -100,7 +98,7 @@
icon_state = "sonic_boss"
icon_living = "sonic_boss"
projectiletype = /obj/item/projectile/knockback/slow
wreckage = /obj/item/prop/tyrlore/basicsonic
wreckage = /obj/item/prop/tyrlore/sonic_boss
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/sonic_boss/load_default_bellies()
. = ..()
@@ -141,7 +139,7 @@
icon_state = "UPshield_boss"
icon_living = "UPshield_boss"
projectiletype = /obj/item/projectile/energy/eclipse/tyrjavelin
wreckage = /obj/item/prop/tyrlore/basicshield
wreckage = /obj/item/prop/tyrlore/shield_boss
var/fullshield = 200
var/shieldrage = 200
@@ -198,6 +196,7 @@
icon_state = "crystalized"
icon_living = "crystalized"
specialattackprojectile = /obj/item/projectile/arc/fragmentation/tyr_mortar
wreckage = /obj/item/prop/tyrlore/crystal_boss
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/crystal_boss/do_special_attack(atom/A)
rng_cycle = rand(1,3)
@@ -216,6 +215,7 @@
name = "experiment 25"
icon_state = "naga_boss"
icon_living = "naga_boss"
wreckage = /obj/item/prop/tyrlore/gravity_boss
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/naga_boss/do_special_attack(atom/A)
rng_cycle = rand(1,3)
@@ -239,7 +239,7 @@
icon_living = "cyan"
size_multiplier = 3
projectiletype = /obj/item/projectile/bullet/tyr_bladeburst
wreckage = /obj/item/prop/tyrlore/ants
wreckage = /obj/item/prop/tyrlore/shotgun
specialattackprojectile = /obj/item/projectile/bullet/astral_blade
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/defense_ai/do_special_attack(atom/A)
@@ -265,7 +265,7 @@
icon_state = "yellow"
icon_living = "yellow"
size_multiplier = 3
wreckage = /obj/item/prop/tyrlore/basicpower
wreckage = /obj/item/prop/tyrlore/engi_boss
specialattackprojectile = /obj/item/projectile/energy/agate_lighting
projectiletype = /obj/item/projectile/energy/agate_lighting
@@ -293,7 +293,7 @@
icon_living = "bright_green"
icon = 'modular_chomp/icons/mob/hivebot.dmi'
size_multiplier = 3
wreckage = /obj/item/prop/tyrlore/drones
wreckage = /obj/item/prop/tyrlore/swarm_boss
special_attack_cooldown = 8 SECONDS
melee_damage_lower = 20
melee_damage_upper = 20
@@ -323,8 +323,66 @@
size_multiplier = 3
specialattackprojectile = /obj/item/projectile/arc/blue_energy/precusor
projectiletype = /obj/item/projectile/arc/blue_energy/precusor
wreckage = /obj/item/prop/tyrlore/meteor_boss
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/meteor_ai/do_special_attack(atom/A, var/strike_downx, var/strikedowny)
strike_downx = rand(-7,7)
strikedowny = rand(-7,7)
bullet_heck(A, strike_downx, strikedowny)
wreckage = bullet_heck(A, strike_downx, strikedowny)
//the add tutortial
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/medical_bot
name = "medical robot"
desc = "A massive hivebot with medical equipment."
health = 600
maxHealth = 600
icon_state = "white"
icon_living = "wite"
icon = 'icons/mob/hivebot.dmi'
size_multiplier = 3
wreckage = /obj/item/prop/tyrlore/medical_boss
special_attack_cooldown = 8 SECONDS
melee_damage_lower = 20
melee_damage_upper = 20
attack_armor_pen = 50
movement_cooldown = 4
special_attack_cooldown = 10 SECONDS
var/datum/disease/base_disease = /datum/disease/advance/agate_rot
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/medical_bot/apply_melee_effects(atom/A)
if(ishuman(A) && prob(25))
var/mob/living/carbon/human/H = A
H.ContractDisease(base_disease)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/swarm_ai/do_special_attack(atom/A)
for(var/i =1 to 3)
new /mob/living/simple_mob/mechanical/hivebot/tyr/heart(src.loc)
/mob/living/simple_mob/mechanical/hivebot/tyr/heart
name = "barrier unit"
icon = 'modular_chomp/icons/mob/tyr.dmi'
icon_state = "guardian"
icon_living = "guardian"
maxHealth = 2.5 LASERS_TO_KILL // 100 hp
health = 2.5 LASERS_TO_KILL
melee_damage_lower = 10
melee_damage_upper = 10
attack_armor_pen = 80
/mob/living/simple_mob/mechanical/hivebot/tyr/heart/handle_special()
if(stat != DEAD)
untouchable_aura()
..()
/mob/living/simple_mob/mechanical/hivebot/tyr/heart/proc/untouchable_aura()
for(var/mob/living/L in orange(src, 3))
if(L.stat == DEAD || !IIsAlly(L))
continue
L.add_modifier(/datum/modifier/aura/heart_barrier, null, src)
/datum/modifier/aura/heart_barrier
mob_overlay_state = "deflect"
incoming_damage_percent = 0
aura_max_distance = 3

View File

@@ -629,7 +629,7 @@
special_attack_min_range = 1
special_attack_max_range = 7
projectiletype = /obj/item/projectile/energy/wp_shotgun //using the weapon found upon tyr
projectiletype = /obj/item/projectile/energy/tyr_rifle //using the weapon found upon tyr
specialattackprojectile = /obj/item/projectile/arc/microsingulo
loot_list = list(/obj/item/slime_extract/sepia = 1,

View File

@@ -22,7 +22,7 @@
icon = 'modular_chomp/icons/mob/hivebot.dmi'
pass_flags = PASSTABLE
hovering = TRUE
movement_cooldown = -3
movement_cooldown = 1
faction = FACTION_TYR
melee_damage_lower = 12
melee_damage_upper = 12
@@ -30,8 +30,8 @@
icon_living = "orange"
/mob/living/simple_mob/mechanical/hivebot/tyr/swarm
maxHealth = 1
health = 1
maxHealth = 3
health = 3
icon_state = "bright_green"
icon_living = "bright_green"
@@ -41,122 +41,12 @@
ai_holder_type = /datum/ai_holder/hostile/ranged/robust
projectiletype = /obj/item/projectile/energy/agate_lighting/fast
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr
name = "ai control center"
desc = "A large, very important looking ai. It sparks as it moves to attacks."
icon_state = "powertower"
icon_living = "powertower"
faction = FACTION_TYR
movement_cooldown = 10
size_multiplier = 2
maxHealth = 500
health = 500
wreckage = /obj/item/prop/tyrlore/reddisc
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases
anchored = 1
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100)
loot_list = list(/obj/item/tool/wirecutters/hybrid/alien = 10,
/obj/item/tool/wrench/hybrid/alien = 10,
/obj/item/tool/crowbar/hybrid/alien = 10,
/obj/item/tool/screwdriver/hybrid/alien = 10,
/obj/item/pickaxe/diamonddrill/alien = 10,
/obj/item/melee/energy/sword/dualsaber = 10,
/obj/item/shield_projector/rectangle/automatic/tyrbarrier = 1,
/obj/item/stock_parts/scanning_module/omni = 80,
/obj/item/stock_parts/micro_laser/omni = 80,
/obj/item/stock_parts/capacitor/omni = 80,
/obj/item/stock_parts/manipulator/omni = 80,
/obj/item/stock_parts/matter_bin/omni = 80,
/obj/item/stock_parts/scanning_module/hyper = 80,
/obj/item/stock_parts/micro_laser/hyper = 80,
/obj/item/stock_parts/capacitor/hyper = 80,
/obj/item/stock_parts/manipulator/hyper = 80,
/obj/item/stock_parts/matter_bin/hyper = 80,
)
/datum/ai_holder/simple_mob/intentional/three_phases/nomove/walk_to_destination()
return
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr/do_special_attack(atom/A)
. = TRUE // So we don't fire a bolt as well.
if(attackcycle == 1)
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, 2), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 2)
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 3, 15), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 3)
specialattackprojectile = /obj/item/projectile/energy/eclipse/tyrjavelin
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
/obj/item/projectile/energy/spikeenergy_ball/boss
damage = 40
armor_penetration = 60
speed = 10
crawl_destroy = TRUE
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower
name = "ai control center"
desc = "A large, very important looking ai."
icon_state = "bluetower"
icon_living = "bluetower"
faction = FACTION_HIVEBOT
movement_cooldown = 10
size_multiplier = 2
maxHealth = 500
health = 500
wreckage = /obj/structure/loot_pile/surface/alien/engineering
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases/nomove
anchored = 1
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 50, bio = 100, rad = 100)
loot_list = list(/obj/item/prop/alien/junk = 100,
/obj/item/multitool/alien = 30,
/obj/item/stack/cable_coil/alien = 30,
/obj/item/tool/crowbar/alien = 30,
/obj/item/tool/screwdriver/alien = 30,
/obj/item/weldingtool/alien = 30,
/obj/item/tool/wirecutters/alien = 30,
/obj/item/tool/wrench/alien = 30,
/obj/item/cell/device/weapon/recharge/alien = 40,
/obj/item/prop/nanoweave/terraformers = 50,
/obj/item/prop/nanoweave/cyan = 50,
/obj/item/prop/nanoweave/lime = 50,
/obj/item/perfect_tele/alien = 100
)
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower/do_special_attack(atom/A)
. = TRUE // So we don't fire a bolt as well.
var/rng_cycle
if(attackcycle == 1)
specialattackprojectile = /obj/item/projectile/beam/midlaser/shortrange
rng_cycle = rand(1,4)
say("PROTOCOL: CROSS X.")
addtimer(CALLBACK(src, PROC_REF(star_burst), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 2)
specialattackprojectile = /obj/item/projectile/energy/wallbreaker/boss
rng_cycle = rand(1,4)
say("PROTOCOL: PRECISION. SWEEP.")
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 25), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 3)
specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
rng_cycle = rand(1,4)
say("PROTOCOL: DISCHARGE.")
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, rng_cycle, 15), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 4)
specialattackprojectile = /obj/item/projectile/arc/explosive_rocket/big
rng_cycle = rand(1,4)
Beam(A, icon_state = "r_beam", time = 1 SECOND, maxdistance = INFINITY)
say("PROTOCOL: MISSILE.")
addtimer(CALLBACK(src, PROC_REF(singleproj), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
/mob/living/simple_mob/mechanical/hivebot/eclipse
name = "repurposed hivebot"

View File

@@ -80,19 +80,8 @@
icon_living = "rex"
/mob/living/simple_mob/vore/fossiltank/do_special_attack(atom/A)
if(health < maxHealth*0.25)
visible_message(span_bolddanger(span_orange("The fossil tank begins self repairs!.")))
addtimer(CALLBACK(src, PROC_REF(cycle_heal), 8), 1 SECOND, TIMER_DELETE_ME)
else
Beam(A, icon_state = "sat_beam", time = 3.5 SECONDS, maxdistance = INFINITY)
addtimer(CALLBACK(src, PROC_REF(sniper_shot), A), 4 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/vore/fossiltank/proc/cycle_heal(var/healamount)
adjustBruteLoss(-100)
adjustFireLoss(-100)
if(healamount > 0)
healamount -= 1
addtimer(CALLBACK(src, PROC_REF(cycle_heal), 8), 1 SECOND, TIMER_DELETE_ME)
Beam(A, icon_state = "sat_beam", time = 3.5 SECONDS, maxdistance = INFINITY)
addtimer(CALLBACK(src, PROC_REF(sniper_shot), A), 4 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/vore/fossiltank/proc/sniper_shot(atom/target)
if(!target)
@@ -126,7 +115,7 @@
icon = 'modular_chomp/icons/mob/tyr.dmi'
icon_state = "jellyfish"
icon_living = "jellyfish"
icon_dead = "jelltdish_dead"
icon_dead = "jellyfish_dead"
movement_cooldown = 1
damage_fatigue_mult = 0 //It's a mutant jellyfish boss mob.
melee_attack_delay = 1.5 SECOND

View File

@@ -25,28 +25,12 @@
check_armour = "melee"
damage_type = BRUTE
/obj/item/projectile/energy/wp_shotgun
name = "laser blast"
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
icon_state = "shotgun_blast"
damage = 25
range = 5
check_armour = "bullet"
damage_type = BRUTE
/obj/item/projectile/energy/wp_shotgun/on_hit(var/atom/movable/target, var/blocked = 0)
if(isliving(target))
var/mob/living/L = target
var/throwdir = get_dir(firer,L)
L.throw_at(get_edge_target_turf(L, throwdir), 3, 10)
return 1
/obj/item/projectile/energy/wp_blaster
/obj/item/projectile/energy/tyr_rifle
name = "laser blast"
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
icon_state = "blaster_blast"
damage = 35
range = 5
range = 6
penetrating = 2
check_armour = "laser"
@@ -58,7 +42,7 @@
penetrating = 2
damage_type = BURN
check_armour = "laser"
range = 5
range = 4
eyeblur = 0 //no no no no no
hitscan = 1
hud_state = "laser"
@@ -69,36 +53,12 @@
range = 0
embed_chance = 0
spread_submunition_damage = FALSE
submunition_spread_max = 150
submunition_spread_min = 60
submunitions = list(/obj/item/projectile/beam/precursor_tyr = 5)
submunition_spread_max = 180
submunition_spread_min = 80
submunitions = list(/obj/item/projectile/beam/precursor_tyr = 7)
/obj/item/gun/energy/energyballchain
name = "tyrian energy club"
desc = "A strange alien weapon from tyr."
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
icon_state = "violence"
item_state = "violence"
wielded_item_state = "placeholder"
origin_tech = list(TECH_COMBAT = 6, TECH_POWER = 5, TECH_PRECURSOR = 3)
charge_cost = 625 //Uses all it's charge in a single shot.
battery_lock = 1 //No changing
accept_cell_type = /obj/item/cell/device
cell_type = /obj/item/cell/device/weapon/recharge/alien/tyr
projectile_type = /obj/item/projectile/energy/spikeenergy_ball
force = 45 //functions as a melee weapon too! Ain't great, but still works.
recoil_mode = 0
charge_meter = 1
move_delay = 0
one_handed_penalty = 50
/obj/item/gun/energy/curse_tyrshotgun
name = "tyrian enforcer firearm"
/obj/item/gun/energy/tyr_rifle
name = "tyrian longarm"
desc = "A strange alien weapon from tyr."
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
icon_state = "shotgun"
@@ -111,41 +71,21 @@
accept_cell_type = /obj/item/cell/device
cell_type = /obj/item/cell/device/weapon/recharge/alien/tyr
projectile_type = /obj/item/projectile/energy/wp_shotgun
projectile_type = /obj/item/projectile/energy/tyr_rifle
force = 35
recoil_mode = 0
charge_meter = 1
firemodes = list(
list(mode_name="explosive", projectile_type=/obj/item/projectile/energy/wp_shotgun, charge_cost = 625),
list(mode_name="spray", projectile_type=/obj/item/projectile/bullet/tyrshotburst, charge_cost = 625),
list(mode_name="single", projectile_type=/obj/item/projectile/energy/tyr_rifle, charge_cost = 250),
list(mode_name="area", projectile_type=/obj/item/projectile/bullet/tyrshotburst, charge_cost = 500),
)
move_delay = 0
one_handed_penalty = 50
/obj/item/gun/energy/curse_blaster
name = "tyrian infantry firearm"
desc = "A strange alien weapon from tyr."
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
icon_state = "solider_blaster"
item_state = "solider_blaster"
wielded_item_state = "placeholder"
origin_tech = list(TECH_COMBAT = 6, TECH_POWER = 5, TECH_PRECURSOR = 3)
charge_cost = 250
battery_lock = 1 //No changing
accept_cell_type = /obj/item/cell/device
cell_type = /obj/item/cell/device/weapon/recharge/alien/tyr
projectile_type = /obj/item/projectile/energy/wp_blaster
recoil_mode = 0
charge_meter = 1
move_delay = 0
one_handed_penalty = 50
/obj/item/cell/device/weapon/recharge/alien/tyr
name = "odd cell"
icon = 'icons/obj/abductor.dmi'
@@ -182,7 +122,7 @@
icon_state = "astral_sea_blade"
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
damage = 30 //21 with intended armor
armor_penetration = 20
armor_penetration = 10
damage_type = BRUTE
check_armour = "melee"
embed_chance = 0
@@ -191,8 +131,9 @@
crawl_destroy = TRUE
/obj/item/projectile/bullet/astral_blade/short
damage = 20
speed = 0.3
range = 4
range = 2
/obj/item/projectile/bullet/tyr_bladeburst
use_submunitions = 1

View File

@@ -3,14 +3,15 @@
description = "A scientist or explorer will need to obtain data discs from Tyr!"
required_points = 3
required_atoms = list(
/obj/item/prop/tyrlore/reddisc = 1,
/obj/item/prop/tyrlore/purpledisc = 1,
/obj/item/prop/tyrlore/greendisc = 1,
/obj/item/prop/tyrlore/basicflora = 1,
/obj/item/prop/tyrlore/basicshield = 1,
/obj/item/prop/tyrlore/advanceshield = 1,
/obj/item/prop/tyrlore/basicsonic = 1,
/obj/item/prop/tyrlore/basicpower = 1,
/obj/item/prop/tyrlore/ants = 1,
/obj/item/prop/tyrlore/drones = 1,
/obj/item/prop/tyrlore/acid_boss = 1,
/obj/item/prop/tyrlore/sonic_boss = 1,
/obj/item/prop/tyrlore/shield_boss = 1,
/obj/item/prop/tyrlore/crystal_boss = 1,
/obj/item/prop/tyrlore/gravity_boss = 1,
/obj/item/prop/tyrlore/gatekeeper = 1,
/obj/item/prop/tyrlore/shotgun = 1,
/obj/item/prop/tyrlore/engi_boss = 1,
/obj/item/prop/tyrlore/meteor_boss = 1,
/obj/item/prop/tyrlore/swarm_boss = 1,
/obj/item/prop/tyrlore/medical_boss = 1.
)

View File

@@ -1,31 +1,9 @@
/datum/design_techweb/tyrenergyballchain
name = "Tyrian Melee Weapon"
id = "tyr_meleegun"
build_type = PROTOLATHE
materials = list(MAT_BRONZE = 12000,MAT_DIAMOND = 4000,MAT_URANIUM = 3000,MAT_COPPER = 3000,MAT_GOLD = 3000,MAT_METALHYDROGEN = 3000,MAT_QUARTZ = 3000,MAT_EAGATE = 3000)
build_path = /obj/item/gun/energy/energyballchain
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/tyrenergyshotgun
name = "Tyrian Enforcer Firearm"
id = "tyr_shotgun"
build_type = PROTOLATHE
materials = list(MAT_BRONZE = 12000,MAT_DIAMOND = 4000,MAT_URANIUM = 3000,MAT_COPPER = 3000,MAT_GOLD = 3000,MAT_METALHYDROGEN = 3000,MAT_QUARTZ = 3000,MAT_EAGATE = 3000)
build_path = /obj/item/gun/energy/curse_tyrshotgun
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/tyrenergyrifle
name = "Tyrian Infantry Firearm"
name = "Tyrian Longarm"
id = "tyr_rifle"
build_type = PROTOLATHE
materials = list(MAT_BRONZE = 12000,MAT_DIAMOND = 4000,MAT_URANIUM = 3000,MAT_COPPER = 3000,MAT_GOLD = 3000,MAT_METALHYDROGEN = 3000,MAT_QUARTZ = 3000,MAT_EAGATE = 3000)
build_path = /obj/item/gun/energy/curse_blaster
build_path = /obj/item/gun/energy/tyr_rifle
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)

View File

@@ -5,8 +5,6 @@
prereq_ids = list(TECHWEB_NODE_MOD_ANOMALY_SUIT)
design_ids = list(
"tyr_rifle",
"tyr_shotgun",
"tyr_meleegun",
"magnet_belt",
"tyr_sabre",
"tyr_barrier",

File diff suppressed because it is too large Load Diff

View File

@@ -546,7 +546,7 @@
/obj/effect/floor_decal/borderfloorblack{
dir = 1
},
/obj/machinery/firealarm{
/obj/machinery/firealarm/alarms_hidden{
pixel_y = 24
},
/turf/simulated/floor/tiled/dark,

View File

@@ -231,7 +231,7 @@
/obj/effect/floor_decal/industrial/warning{
dir = 1
},
/obj/machinery/firealarm{
/obj/machinery/firealarm/alarms_hidden{
pixel_y = 24
},
/obj/effect/floor_decal/rust,
@@ -477,8 +477,7 @@
/turf/simulated/floor/tiled,
/area/submap/BorgLab)
"rP" = (
/obj/machinery/firealarm{
alarms_hidden = 1;
/obj/machinery/firealarm/alarms_hidden{
dir = 8;
pixel_x = -24
},
@@ -1017,8 +1016,7 @@
/area/submap/BorgLab)
"Oz" = (
/obj/item/pickaxe/plasmacutter,
/obj/machinery/firealarm{
alarms_hidden = 1;
/obj/machinery/firealarm/alarms_hidden{
pixel_y = 24
},
/obj/effect/floor_decal/rust,

View File

@@ -737,8 +737,7 @@
/area/submap/BorgLab)
"DY" = (
/obj/item/pickaxe/plasmacutter,
/obj/machinery/firealarm{
alarms_hidden = 1;
/obj/machinery/firealarm/alarms_hidden{
pixel_y = 24
},
/obj/effect/floor_decal/rust,
@@ -787,8 +786,7 @@
/turf/simulated/floor/tiled,
/area/submap/BorgLab)
"EE" = (
/obj/machinery/firealarm{
alarms_hidden = 1;
/obj/machinery/firealarm/alarms_hidden{
dir = 8;
pixel_x = -24
},
@@ -1081,7 +1079,7 @@
/obj/effect/floor_decal/industrial/warning{
dir = 1
},
/obj/machinery/firealarm{
/obj/machinery/firealarm/alarms_hidden{
pixel_y = 24
},
/obj/effect/floor_decal/rust,

View File

@@ -5066,6 +5066,8 @@
#include "modular_chomp\code\datums\crafting\items.dm"
#include "modular_chomp\code\datums\crafting\recipes.dm"
#include "modular_chomp\code\datums\crafting\tyr_tribal.dm"
#include "modular_chomp\code\datums\diseases\tyr.dm"
#include "modular_chomp\code\datums\diseases\symptom\agate_blob.dm"
#include "modular_chomp\code\datums\elements\lootable\christmas_present.dm"
#include "modular_chomp\code\datums\elements\lootable\mecha.dm"
#include "modular_chomp\code\datums\outfits\jobs\command.dm"
@@ -5147,6 +5149,7 @@
#include "modular_chomp\code\modules\admin\verbs\debug.dm"
#include "modular_chomp\code\modules\artifice\deadringer.dm"
#include "modular_chomp\code\modules\awaymissions\tank.dm"
#include "modular_chomp\code\modules\blob2\agate_blob.dm"
#include "modular_chomp\code\modules\casino\casino_book.dm"
#include "modular_chomp\code\modules\casino\casino_clothing.dm"
#include "modular_chomp\code\modules\casino\casino_items.dm"
@@ -5282,6 +5285,7 @@
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\bullet_heck\base.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\bullet_heck\bullet_patterns.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\bullet_heck\eclipse.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\bullet_heck\hivebot.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\bullet_heck\other_attacks.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\bullet_heck\puddle_mechanic.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\bullet_heck\tyrian.dm"