Skip to content

Commit

Permalink
Добавлено биооружие, 6 ядер и 6 новых существ
Browse files Browse the repository at this point in the history
  • Loading branch information
PhantornRU committed Mar 7, 2024
1 parent bd04e21 commit 23fa237
Show file tree
Hide file tree
Showing 11 changed files with 294 additions and 19 deletions.
2 changes: 1 addition & 1 deletion code/modules/projectiles/projectile/bullets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@

/obj/item/projectile/bullet/meteorshot/New()
..()
SpinAnimation()
SpinAnimation(5)

/obj/item/projectile/bullet/mime
damage = 40
Expand Down
9 changes: 0 additions & 9 deletions modular_ss220/antagonists/_antagonists.dme
Original file line number Diff line number Diff line change
Expand Up @@ -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
141 changes: 141 additions & 0 deletions modular_ss220/antagonists/code/guns/biogun.dm
Original file line number Diff line number Diff line change
@@ -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 "<span class='notice'>[src] заряжен [amount]/[max_capacity].</span>"
return "<span class='notice'>[src] разряжен.</span>"

// ============== Существа ==============

/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)
. = ..()
92 changes: 92 additions & 0 deletions modular_ss220/antagonists/code/guns/biogun_ammo.dm
Original file line number Diff line number Diff line change
@@ -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
4 changes: 4 additions & 0 deletions modular_ss220/antagonists/code/guns/dartgun.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
14 changes: 7 additions & 7 deletions modular_ss220/antagonists/code/guns/spikegun.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand All @@ -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
Expand All @@ -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)
. = ..()

Expand All @@ -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
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Binary file modified modular_ss220/antagonists/icons/guns/vox_guns.dmi
Binary file not shown.
Binary file not shown.

0 comments on commit 23fa237

Please sign in to comment.