From 23fa2375ad846cffe066bf039200efcc062f71d9 Mon Sep 17 00:00:00 2001 From: PhantornRU Date: Thu, 7 Mar 2024 18:11:27 +1000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B1=D0=B8=D0=BE=D0=BE=D1=80=D1=83=D0=B6=D0=B8?= =?UTF-8?q?=D0=B5,=206=20=D1=8F=D0=B4=D0=B5=D1=80=20=D0=B8=206=20=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D1=85=20=D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/projectiles/projectile/bullets.dm | 2 +- modular_ss220/antagonists/_antagonists.dme | 9 -- modular_ss220/antagonists/code/guns/biogun.dm | 141 ++++++++++++++++++ .../antagonists/code/guns/biogun_ammo.dm | 92 ++++++++++++ .../antagonists/code/guns/dartgun.dm | 4 + .../antagonists/code/guns/spikegun.dm | 14 +- .../objects/packs/vox_shop_pack_bio.dm | 48 ++++++ .../code/vox_raider/objects/vox_shop.dm | 2 +- .../code/vox_raider/objects/vox_trade.dm | 1 - .../antagonists/icons/guns/vox_guns.dmi | Bin 9065 -> 3086 bytes .../antagonists/icons/objects/critter.dmi | Bin 0 -> 6201 bytes 11 files changed, 294 insertions(+), 19 deletions(-) create mode 100644 modular_ss220/antagonists/icons/objects/critter.dmi diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 01c719abfff1..06f5397735cc 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -181,7 +181,7 @@ /obj/item/projectile/bullet/meteorshot/New() ..() - SpinAnimation() + SpinAnimation(5) /obj/item/projectile/bullet/mime damage = 40 diff --git a/modular_ss220/antagonists/_antagonists.dme b/modular_ss220/antagonists/_antagonists.dme index 63f489b41169..2431f16efa90 100644 --- a/modular_ss220/antagonists/_antagonists.dme +++ b/modular_ss220/antagonists/_antagonists.dme @@ -55,12 +55,3 @@ #include "code/vox_raider/objects/packs/vox_shop_pack_raider.dm" #include "code/vox_raider/objects/packs/vox_shop_pack_dart.dm" #include "code/vox_raider/objects/packs/vox_shop_pack_spike.dm" -// BEGIN_INTERNALS -// END_INTERNALS -// BEGIN_FILE_DIR -#define FILE_DIR . -// END_FILE_DIR -// BEGIN_PREFERENCES -// END_PREFERENCES -// BEGIN_INCLUDE -// END_INCLUDE diff --git a/modular_ss220/antagonists/code/guns/biogun.dm b/modular_ss220/antagonists/code/guns/biogun.dm index e69de29bb2d1..7b4d42977752 100644 --- a/modular_ss220/antagonists/code/guns/biogun.dm +++ b/modular_ss220/antagonists/code/guns/biogun.dm @@ -0,0 +1,141 @@ +/obj/item/gun/throw/biogun + name = "biogun" + desc = "Метатель живых био-ядер." + icon = 'modular_ss220/antagonists/icons/guns/vox_guns.dmi' + lefthand_file = 'modular_ss220/antagonists/icons/guns/inhands/guns_lefthand.dmi' + righthand_file = 'modular_ss220/antagonists/icons/guns/inhands/guns_righthand.dmi' + icon_state = "biogun" + item_state = "spike_long" + var/inhand_charge_sections = 3 + w_class = WEIGHT_CLASS_HUGE + max_capacity = 3 + valid_projectile_type = /obj/item/biocore + +/obj/item/gun/throw/biogun/process_chamber() + . = ..() + update_icon() + +/obj/item/gun/throw/biogun/update_icon_state() + . = ..() + var/inhand_ratio = CEILING((length(loaded_projectiles) / max_capacity) * inhand_charge_sections, 1) + var/new_item_state = "[initial(item_state)][inhand_ratio]" + item_state = new_item_state + +/obj/item/gun/throw/biogun/update_overlays() + . = ..() + var/num = length(loaded_projectiles) + if(num) + num = min(num, max_capacity) + . += "[icon_state]_charge[num]" + +/obj/item/gun/throw/biogun/notify_ammo_count() + var/amount = get_ammocount() + if(get_ammocount() >= 1) + return "[src] заряжен [amount]/[max_capacity]." + return "[src] разряжен." + +// ============== Существа ============== + +/mob/living/simple_animal/hostile/viscerator/vox + name = "vox viscerator" + icon = 'modular_ss220/antagonists/icons/objects/critter.dmi' + faction = list("Vox") + mob_biotypes = MOB_ROBOTIC + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = -1, CLONE = -1, STAMINA = 0, OXY = 0) + can_be_on_fire = FALSE + fire_damage = 1 + unsuitable_atmos_damage = 0 + mob_size = MOB_SIZE_TINY + flying = FALSE + melee_damage_lower = 10 + melee_damage_upper = 15 + +/mob/living/simple_animal/hostile/viscerator/vox/Process_Spacemove(movement_dir) + return TRUE + +/mob/living/simple_animal/hostile/viscerator/vox/stamina + name = "stakikamka" + desc = "Небольшое биомеханическое проворное существо на высоких ножках, мешающее и изматывающее тех, кому оно не понравилось." + icon_state = "stamina" + icon_living = "stamina" + obj_damage = 0 + speed = 0.25 + melee_damage_type = STAMINA + melee_damage_lower = 5 + melee_damage_upper = 20 + attacktext = "утомляет" + +/mob/living/simple_animal/hostile/viscerator/vox/stamina/death(gibbed) + if(prob(30)) + xgibs(loc) + . = ..() + +/mob/living/simple_animal/hostile/viscerator/vox/acid + name = "acikikid" + desc = "Небольшое биомеханическое крабоподобное существо из пасти которого стекает кислота, которую тот наматывает на свои маленькие острые клешни." + icon_state = "acid" + icon_living = "acid" + health = 50 + maxHealth = 50 + obj_damage = 20 + melee_damage_type = BURN + melee_damage_lower = 10 + melee_damage_upper = 30 + attacktext = "выжигает" + mob_size = MOB_SIZE_SMALL + +/mob/living/simple_animal/hostile/viscerator/vox/acid/death(gibbed) + xgibs(loc) + . = ..() + +/mob/living/simple_animal/hostile/viscerator/vox/kusaka + name = "kusakika" + desc = "Маленькое биомеханическое существо с острыми клыкам с половину его тела." + icon_state = "kusaka" + icon_living = "kusaka" + speed = 0.5 + obj_damage = 0 + melee_damage_lower = 5 + melee_damage_upper = 10 + armour_penetration_flat = 30 + attacktext = "кусает" + +/mob/living/simple_animal/hostile/viscerator/vox/kusaka/death(gibbed) + if(prob(20)) + robogibs(loc) + . = ..() + +/mob/living/simple_animal/hostile/viscerator/vox/taran + name = "tarakikan" + desc = "Весомое пластинчатое биомеханическое существо." + icon_state = "taran" + icon_living = "taran" + speed = 2 + health = 100 + maxHealth = 100 + obj_damage = 50 + melee_damage_lower = 10 + melee_damage_upper = 20 + armour_penetration_flat = 20 + attacktext = "таранит" + mob_size = MOB_SIZE_HUMAN + +/mob/living/simple_animal/hostile/viscerator/vox/taran/death(gibbed) + robogibs(loc) + . = ..() + +/mob/living/simple_animal/hostile/viscerator/vox/tox + name = "toxikikic" + desc = "Маленькое биомеханическое иглоподобное существо." + icon_state = "tox" + icon_living = "tox" + melee_damage_type = TOX + melee_damage_lower = 5 + melee_damage_upper = 15 + armour_penetration_flat = 80 + attacktext = "вонзается" + +/mob/living/simple_animal/hostile/viscerator/vox/tox/death(gibbed) + xgibs(loc) + . = ..() diff --git a/modular_ss220/antagonists/code/guns/biogun_ammo.dm b/modular_ss220/antagonists/code/guns/biogun_ammo.dm index e69de29bb2d1..96893afff0bc 100644 --- a/modular_ss220/antagonists/code/guns/biogun_ammo.dm +++ b/modular_ss220/antagonists/code/guns/biogun_ammo.dm @@ -0,0 +1,92 @@ +/obj/item/biocore + name = "biocore" + desc = "Острое биоядро с живым организмом внутри. Оно пульсирует и ответно реагирует толчками на каждые взаимодействия." + icon = 'modular_ss220/antagonists/icons/guns/vox_guns.dmi' + icon_state = "biocore" + item_state = "cottoncandy_purple" + + var/mob/living/mob_spawner_type = /mob/living/simple_animal/hostile/creature + var/spawn_amount = 1 // сколько в одном ядре + var/is_spin = TRUE + + // Дополнительные эффекты при втыкании в гуманоида + var/stun = 0 + var/weaken = 5 SECONDS + var/knockdown = 2 SECONDS + var/paralyze = 0 + var/irradiate = 0 + var/stutter = 5 SECONDS + var/slur = 0 + var/eyeblur = 0 + var/drowsy = 0 + var/stamina = 30 + var/jitter = 10 SECONDS + throwforce = 20 + w_class = WEIGHT_CLASS_NORMAL + + +/obj/item/biocore/Initialize(mapload) + . = ..() + +/obj/item/biocore/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback) + playsound(loc,'sound/weapons/bolathrow.ogg', 50, TRUE) + if(is_spin) + SpinAnimation() + if(!..()) + return + +/obj/item/biocore/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + spawn_mobs() + hurt_impact(hit_atom) + +/obj/item/biocore/AltClick(mob/user) + . = ..() + spawn_mobs() + +/obj/item/biocore/proc/spawn_mobs() + var/turf/T = get_turf(src) + for(var/i in 1 to spawn_amount) + var/atom/movable/x = new mob_spawner_type(T) + x.admin_spawned = admin_spawned + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(x, pick(NORTH,SOUTH,EAST,WEST)) + do_sparks(5, TRUE, T) + qdel(src) + +/obj/item/biocore/proc/hurt_impact(atom/hit_atom) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom + L.apply_effects(stun, weaken, knockdown, paralyze, irradiate, slur, stutter, eyeblur, drowsy, 0, stamina, jitter) + +// ============== Ядра ============== +/obj/item/biocore/viscerator + name = "biocore (viscerator)" + spawn_amount = 3 + mob_spawner_type = /mob/living/simple_animal/hostile/viscerator/vox + +/obj/item/biocore/stamina + name = "biocore (stakikamka)" + spawn_amount = 3 + mob_spawner_type = /mob/living/simple_animal/hostile/viscerator/vox/stamina + +/obj/item/biocore/acid + name = "biocore (acikikid)" + spawn_amount = 1 + mob_spawner_type = /mob/living/simple_animal/hostile/viscerator/vox/acid + +/obj/item/biocore/kusaka + name = "biocore (kusakika)" + spawn_amount = 4 + mob_spawner_type = /mob/living/simple_animal/hostile/viscerator/vox/kusaka + +/obj/item/biocore/taran + name = "biocore (tarakikan)" + spawn_amount = 1 + mob_spawner_type = /mob/living/simple_animal/hostile/viscerator/vox/taran + +/obj/item/biocore/tox + name = "biocore (toxikikic)" + spawn_amount = 3 + mob_spawner_type = /mob/living/simple_animal/hostile/viscerator/vox/tox diff --git a/modular_ss220/antagonists/code/guns/dartgun.dm b/modular_ss220/antagonists/code/guns/dartgun.dm index 9b0cbfb70659..9f369cac88c2 100644 --- a/modular_ss220/antagonists/code/guns/dartgun.dm +++ b/modular_ss220/antagonists/code/guns/dartgun.dm @@ -14,6 +14,10 @@ var/pixel_y_overlay_div = 5 // сколько у нас делений для спрайта оверлея ("Позиций") var/pixel_y_overlay_offset = 2 // на сколько пикселей смещаем оверлей при полном делении +/obj/item/gun/syringe/dart_gun/Destroy() + qdel(cartridge_loaded) + . = ..() + /obj/item/gun/syringe/dart_gun/update_overlays() . = ..() if(cartridge_loaded) diff --git a/modular_ss220/antagonists/code/guns/spikegun.dm b/modular_ss220/antagonists/code/guns/spikegun.dm index 8fda920238a3..fbca29f41684 100644 --- a/modular_ss220/antagonists/code/guns/spikegun.dm +++ b/modular_ss220/antagonists/code/guns/spikegun.dm @@ -40,7 +40,7 @@ /obj/item/gun/energy/spike/update_icon_state() . = ..() var/inhand_ratio = CEILING((cell.charge / cell.maxcharge) * inhand_charge_sections, 1) - var/new_item_state = "[initial(item_state)]_[inhand_ratio]" + var/new_item_state = "[initial(item_state)][inhand_ratio]" item_state = new_item_state @@ -49,7 +49,7 @@ name = "\improper Vox spike longgun" desc = "Оружие причудливой формы с яркими пурпурными энергетическими светочами. Рукоять предназначена для когтистой руки. Выстреливает длинными энергетическими самовосстановимыми кристаллами с увеличенной проникающей способностью." icon_state = "spike_long" - item_state = "spikelong" + item_state = "spike_long" charge_sections = 6 inhand_charge_sections = 6 selfcharge = TRUE @@ -59,7 +59,7 @@ /obj/item/gun/energy/spike/long/process() if(selfcharge) if(charge_tick < charge_delay) - return + return ..() playsound(src, 'modular_ss220/antagonists/sound/guns/m79_reload.ogg', 25, 1) . = ..() @@ -70,7 +70,7 @@ name = "\improper Vox spike biogun" desc = "Оружие причудливой формы с шипами-трубками для нанизывания на руку. Рукоять предназначена для когтистой руки и имеет заостренные полые шипы. Выстреливает большими энергетическими заостренными кристаллами, выматывающие цель." icon_state = "spike_bio" - item_state = "spikebio" + item_state = "spike_bio" w_class = WEIGHT_CLASS_HUGE charge_sections = 4 inhand_charge_sections = 4 @@ -84,12 +84,12 @@ /obj/item/gun/energy/spike/bio/process() if(selfcharge) if(charge_tick < charge_delay) - return + return ..() if(!ishuman(loc)) - return + return ..() var/mob/living/carbon/human/user = loc if(user.nutrition <= NUTRITION_LEVEL_HYPOGLYCEMIA) - return + return ..() user.adjust_nutrition(-nutrition_cost) if(!isvox(user)) user.adjustBruteLoss(brute_cost) diff --git a/modular_ss220/antagonists/code/vox_raider/objects/packs/vox_shop_pack_bio.dm b/modular_ss220/antagonists/code/vox_raider/objects/packs/vox_shop_pack_bio.dm index d7fee211f4a4..d5db49fbec9f 100644 --- a/modular_ss220/antagonists/code/vox_raider/objects/packs/vox_shop_pack_bio.dm +++ b/modular_ss220/antagonists/code/vox_raider/objects/packs/vox_shop_pack_bio.dm @@ -3,5 +3,53 @@ category = VOX_PACK_BIO // ============== GUNS ============== +/datum/vox_pack/bio/gun + name = "Биомёт" + desc = "Компактный метатель биоядер-снарядов. Вмещает в себя 3 острых биоядра одновременно, выстреливая их поочереди, вонзая в плоть цели, а после вылупляя, выпуская биомеханическую тварь для последующей помощи Воксам." + reference = "B_G" + cost = 0 + contains = list(/obj/item/gun/throw/biogun) // ============== AMMO ============== + +/datum/vox_pack/bio/core + name = "Биоядро (Потрошитель х3)" + desc = "Переписанная машина синдиката на служении Воксам." + reference = "B_B_VISC" + cost = 0 + contains = list(/obj/item/biocore/viscerator) + +/datum/vox_pack/bio/core/ + name = "Биоядро (Стакикамка х3)" + desc = "Биомеханизм изматывающий своих жертв." + reference = "B_B_STAM" + cost = 0 + contains = list(/obj/item/biocore/stamina) + +/datum/vox_pack/bio/core/ + name = "Биоядро (Асикикид х1)" + desc = "Кислотный жгущий биомеханизм." + reference = "B_B_ACID" + cost = 0 + contains = list(/obj/item/biocore/acid) + +/datum/vox_pack/bio/core/ + name = "Биоядро (Кусакика х4)" + desc = "Кусачий маленький биомеханизм." + reference = "B_B_KUS" + cost = 0 + contains = list(/obj/item/biocore/kusaka) + +/datum/vox_pack/bio/core/ + name = "Биоядро (Таракикан х1)" + desc = "Броневой биомеханизм, приспособленный для вышибания дверей." + reference = "B_B_TAT" + cost = 0 + contains = list(/obj/item/biocore/taran) + +/datum/vox_pack/bio/core/ + name = "Биоядро (Токсикикик х3)" + desc = "Иглоподобный биомеханизм для впрыскивания токсин." + reference = "B_B_TOX" + cost = 0 + contains = list(/obj/item/biocore/tox) diff --git a/modular_ss220/antagonists/code/vox_raider/objects/vox_shop.dm b/modular_ss220/antagonists/code/vox_raider/objects/vox_shop.dm index b619db5b371b..ed77ed84505a 100644 --- a/modular_ss220/antagonists/code/vox_raider/objects/vox_shop.dm +++ b/modular_ss220/antagonists/code/vox_raider/objects/vox_shop.dm @@ -102,7 +102,7 @@ // Размещаем по емкостям if(length(objs_for_contain) > 2) - var/container_type = is_heavy ? /obj/structure/closet/crate : /obj/item/storage/box + var/container_type = is_heavy ? /obj/structure/closet/crate/trashcart : /obj/item/storage/box var/obj/container = new container_type(get_turf(src)) for(var/obj/obj in objs_for_contain) obj.forceMove(container) diff --git a/modular_ss220/antagonists/code/vox_raider/objects/vox_trade.dm b/modular_ss220/antagonists/code/vox_raider/objects/vox_trade.dm index 8abef64b91b8..f83b11c11cee 100644 --- a/modular_ss220/antagonists/code/vox_raider/objects/vox_trade.dm +++ b/modular_ss220/antagonists/code/vox_raider/objects/vox_trade.dm @@ -185,7 +185,6 @@ return angry_count = 0 - atom_say(span_notice("Вами довольны. Производится пересчет ценностей.")) INVOKE_ASYNC(src, PROC_REF(make_cash), user, items_list) /obj/machinery/vox_trader/proc/make_cash(mob/user, list/items_list) diff --git a/modular_ss220/antagonists/icons/guns/vox_guns.dmi b/modular_ss220/antagonists/icons/guns/vox_guns.dmi index 70de4109e8e215e61259087304bcd318c8e47491..78cd6d492c6e36d12f937580a17c455d28b1907a 100644 GIT binary patch literal 3086 zcmV+p4Ds`cP)f&%*>T5|Nqo3A4fV;aA%Y#ptDQ9 zGG0&&9~ou<0A^;)U@3~fj{sc?W`!J(MMF*|B`y{f8D(Q{EC?_zC?!uyL>drFz>Ifh00001bW%=J06^y0W&i*IM|xCPbVOxyV{&P5 zbZKvH004NLrIpcYgD@0^ugz0PdppKjyWZ_)w2WS?uOO+O#;`Pz7}xdfcT|{`F>=mC z(39}}C+7bpF4Ncj+u@k*-Vfpve50LBU((IvlSr<*3>6NtwMZ(^stUuP2{Hhd3+r?P zg|yb$g-A;68=PH<S%m+^&(g|10OM%i7^@ zwTE(sI)F4Y_(o`dU*3KU-HbCP?MTSsBujs)XXLlYH+=Tlio=?PI!nj8uLsY6;w}01=Z3~ zL3OlKa11SgU?w*0&LEQU150g5HSi9PyLX4jtwX$U{*O~~i?e_SZdX2Jc=dO&O!voK z|I7advNm(B9r%N(000TKNklQKE+N_8C57;xnJ2gcF~gBwI@Lt*_w7`V5$@(hCg!(a05 z?xcv$3>fsh;iq5zBT>}`MgGbC$Rvkg(DyxQ23=QuxKRo|%b=tMV=HCtl#mu7)bPDw^&r3-dewstbp~&b%Aj*M z9)CuMWF#@@d!EM+0!i)AAAa&G2QBIh>I}-}7xFOrb#yQFrwUMK;0S}KWbjt}Fo6ty z27lsyn5~`$UP-Z@5@-kM%?Jm#$dLvIvJ=S|GbouaJl7q1&;UOHL-@sI(ed?^#}-yM z`wa5+mQEK~xc&0wi`<}0$)6w-_&6gTX+~~t3h)zbB-tY!ugcXJ7LUsmK^UQZuhuhl4*}p)dB&sv$NUgVU2o~>!BaQF*{?HpT zivT19rXzQRKLfvl>o#3v9vkRFo(V~gr!KfQW!Y?z-JOueDMWv znirs!VP9l`wdk%4;*2O5O3?+z2_~{O#@`33N`7oeJ9p#gRgPPL&x_@4_1 z5QoBHY2fkew{MTR1Gcrh0Q(tkaC@s7Mb80qxHnb!tbt)jxdAZv-@*aV_5$o@xDS}a zam}HR31CzVWCnQyZhHY58SVq-@Lue&X&|#8y#UZYna(djBg4JG9Mq`s@{jFdLPnz@B8g9wf_6xYWXXkwp9X_T7^u%a1HBpyr|2-sw@&EG;A{p55>5#CjIym0zH5fjADUtGr)C&^77U{^ zAc(->j7|dhodkq!>Q_3Fk2c87O<I1J1Yidw z2!bdGW)m`P5%Gb1w84PD$O6{jIGfBu3b!<5F421kPk~3uBiCy$K`B-0dwhHo4T3U* z&_pMMHP{IE301$?F?`qPKQ#JJjsDzt1o|BBge1b=hy4(GV1SPV%3NFyILx5IV3zm4 z8T*0TF8;Yb{!5Qp#0}idsL<9{sU3yKM{rgj5HqxGc%S!9C!jYR&?X9N1#m- zb`wNVN7?Ha7(QA4&|crMbOX$M1lMd=Y7Y&o6Z7brSz4?u!mt7BNY9-EEX;FGr;R>S(Qy%e=CkUo$`AH$sD1$ zfs%0GF4|bM(9I_)03&e>Mi#|mZS)Hu$uh+}Kucsp2<(fNy7_>EAXDLV zKAldbx`TtO;uYb1r#$~~{oEuAh(EudzzC8okk-2CK=|`Yf698-ytQsNFr&S|$N@QF z<0T{}K{v%*uG38iCvG;+#c{~zIh;t!=BLw*2ZxNLHWke0)$w1a8_%NFy`0AMrqj(w z7w@I{u~;k?i^XEGSSx2UhRsK2$S&mC94qm(YwWeP|w=yYR&{6PXC{Pp_n zZHAa zuba+h`_3cBZMjXSVH!@;vU;?yLq^$VK5xa%YPEb{;)eT*qt~UJT7NrPkNNG!DI7Ri z)aU_1PuHs!y76qc<^42$cizFrlBI?ZlRDjaU{uWSV*F@lh52!oYwT%S-FRS5%etA9 zuC}Z}G6V4VdmG(+(#<-{QMzIY!i5-2>6>h+qSK8h-LBvG(lTAW!i_f=cnc+xE_QgDsQ<^Udlb%xXF=CfLD`3h{qo8Nx;I{gB`xqHi3 zVoTBbM5kW>xIn>O*0prH#bU8oEEdCw_x7tJrqkMfeb8`P+Yg1+-%KQb11bGq7&@@i zY(M;!;$u$goTPXQa8jr89QFsu{2=~X%e?+3`)8Qm4@vee=OlTlQ95L`r{WMql5g(Z z`_R$BdS~Qs&VuQLL}Cyf z5=d7NQFhF>-EJ2JLG`PJbp5MqT}$3bn+6G33Ywok1e?(%eS1>Xw?$|f3(jB2Y zS_N&&9m15z%0GSSalE%0OENn(k9?-sRf*#r#aqIEl^QgUB==XD4fBa&hnd<10r-OE z`U=?$pndL4oYdtogKT!kk8UOPnGhVpumTC&flZ2oDh@RlWia9E8FVBt2oAv?-hpW% zgOH1AqRBkT`dragxm`9?f<5lfAu!U!VXPfw41?z{U(M7$>xADp4*n=k@c3H*<4l}o z@N)cRYti}wjk61&ak6=keRnm_9OMp{G(ClT1ho&O?`e>%pfXReS@F`Q2n{teSLV%P zu~;k?i^XEGSS)8mP<*P@-(=|Y@<}}-C_dHdZ<5n=dikUeC#oNs^);+%R1RWvdikV} z#-RGzYX^F(`q~HaO4SaI(T%FFK@jKHkE^eB0)2jZRym+g4^K)xeh@k|q`vk_pC6_V z&(c=-N}u2YJSp@T^jM@DQD1}jo~H04jF9UOkimzebR+6(9cIv!`dTM_(5U)a7o(_A z^|dbML9^;>U94nmea&LASS%Kc#bU8oEEbE!(k)&5Rm&v0_`9T0bW)!)2pUh75lZTB zrLL(R^bD^*$*NPD>W!nX{`3vRKZOiTJE_kZ!L?`5x%xinT>mI~{qx|}uVgG1i^XEG cST2bF1KEsO^{+6?v;Y7A07*qoM6N<$g0i68F#rGn literal 9065 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 diff --git a/modular_ss220/antagonists/icons/objects/critter.dmi b/modular_ss220/antagonists/icons/objects/critter.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6e09f54898a86d4adeef947d40d46492ee091ab2 GIT binary patch literal 6201 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