diff --git a/_maps/map_files220/RandomZLevels/caves.dmm b/_maps/map_files220/RandomZLevels/caves.dmm index b50a0494bbed..6c00ef4ef7e1 100644 --- a/_maps/map_files220/RandomZLevels/caves.dmm +++ b/_maps/map_files220/RandomZLevels/caves.dmm @@ -4099,11 +4099,9 @@ }, /area/awaymission/caves/build/reqpower_build) "uO" = ( -/mob/living/simple_animal/hostile/skeleton/deadwizard{ - wander = 0 - }, /obj/structure/stone_tile/slab, /obj/structure/stone_tile/slab, +/mob/living/simple_animal/hostile/deadwizard, /turf/simulated/floor/engine/cult/lavaland_air{ planetary_atmos = 1 }, @@ -5732,14 +5730,14 @@ }, /area/awaymission/caves) "Dw" = ( -/obj/structure{ - icon_state = "holopad_open"; - icon = 'icons/obj/stationobjs.dmi'; - desc = "Holopad for long-distance communication."; - name = "holopad" +/obj/machinery/light/small/directional/west, +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stack/cable_coil{ + amount = 5 }, +/obj/item/stock_parts/capacitor/adv, +/obj/item/circuitboard/holopad, /obj/effect/spawner/random_spawners/dirt_often, -/obj/machinery/light/small/directional/west, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "dark" diff --git a/modular_ss220/maps220/code/mobs.dm b/modular_ss220/maps220/code/mobs.dm index a8bd0f769632..88aaf29f8797 100644 --- a/modular_ss220/maps220/code/mobs.dm +++ b/modular_ss220/maps220/code/mobs.dm @@ -188,42 +188,6 @@ melee_damage_upper = 30 speed = -1 -/mob/living/simple_animal/hostile/skeleton/deadwizard - name = "древний маг" - desc = "Древний волшебник, тысячелетиями властвующий над проклятым могильником." - icon = 'modular_ss220/maps220/icons/simple_human.dmi' - icon_living = "deadwizard" - icon_state = "deadwizard" - maxHealth = 400 - health = 400 - ranged = 1 - retreat_distance = 7 - minimum_distance = 5 - ranged_cooldown_time = 5 - ranged_ignores_vision = TRUE - aggro_vision_range = 12 - vision_range = 12 - del_on_death = 1 - projectilesound = 'sound/magic/blind.ogg' - loot = list( - /obj/effect/decal/remains/human, - /obj/item/clothing/head/crown, - /obj/item/clothing/suit/imperium_monk, - /obj/effect/particle_effect/smoke/bad, - /obj/item/emerald_stone) - -/mob/living/simple_animal/hostile/skeleton/deadwizard/Shoot(atom/targeted_atom) - ..() - if (get_dist(src, targeted_atom) > 9) - rapid = 1 - ranged_cooldown_time = 15 - projectiletype = /obj/item/projectile/magic/fireball/infernal - else - projectiletype = /obj/item/projectile/magic/arcane_barrage - rapid = 4 - rapid_fire_delay = 1 - ranged_cooldown_time = 15 - /* Vox Raiders */ /mob/living/simple_animal/hostile/vox name = "Vox Raider" @@ -548,6 +512,9 @@ minbodytemp = 0 weather_immunities = list("ash") stat_attack = UNCONSCIOUS + see_in_dark = 8 + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE + tts_seed = "Anubarak" /mob/living/simple_animal/hostile/abomination/super desc = "Оскалившийся, страшный монстр. Этот кажется проворным." @@ -607,7 +574,7 @@ del_on_death = TRUE random_color = FALSE -/* Clown */ +/* Caves bosses */ /mob/living/simple_animal/hostile/clown/mutant name = "неизвестный" desc = "Что бы это не было, уничтожь его!" @@ -634,3 +601,56 @@ attacktext = "неловко замахивается на" loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/human, /obj/effect/gibspawner/human, /obj/item/grown/bananapeel, /obj/item/bikehorn/golden) wander = FALSE + +/mob/living/simple_animal/hostile/deadwizard + name = "\improper древний маг" + desc = "Древний некромант, тысячелетиями властвующий над проклятым могильником." + icon = 'modular_ss220/maps220/icons/simple_human.dmi' + icon_living = "deadwizard" + icon_state = "deadwizard" + mob_biotypes = MOB_UNDEAD | MOB_HUMANOID + turns_per_move = 5 + speak_emote = list("rattles") + emote_see = list("rattles") + a_intent = INTENT_HARM + maxHealth = 400 + health = 400 + ranged = TRUE + retreat_distance = 7 + minimum_distance = 5 + ranged_cooldown_time = 5 + ranged_ignores_vision = TRUE + robust_searching = TRUE + aggro_vision_range = 12 + vision_range = 12 + see_in_dark = 8 + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE + minbodytemp = 0 + maxbodytemp = 1500 + speed = 1 + healable = FALSE + stat_attack = UNCONSCIOUS + faction = list("skeleton") + projectilesound = 'sound/magic/blind.ogg' + 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) + deathmessage = "collapses into a pile of bones!" + del_on_death = TRUE + loot = list( + /obj/effect/decal/remains/human, + /obj/item/clothing/head/crown, + /obj/item/clothing/suit/imperium_monk, + /obj/effect/particle_effect/smoke/bad, + /obj/item/emerald_stone) + tts_seed = "Abaddon" + +/mob/living/simple_animal/hostile/deadwizard/Shoot(atom/targeted_atom) + ..() + if (get_dist(src, targeted_atom) > 9) + rapid = 1 + ranged_cooldown_time = 15 + projectiletype = /obj/item/projectile/magic/fireball/infernal + else + projectiletype = /obj/item/projectile/magic/arcane_barrage + rapid = 4 + rapid_fire_delay = 1 + ranged_cooldown_time = 15 diff --git a/modular_ss220/objects/code/weapons.dm b/modular_ss220/objects/code/weapons.dm index f12097faa503..0981030bf776 100644 --- a/modular_ss220/objects/code/weapons.dm +++ b/modular_ss220/objects/code/weapons.dm @@ -156,3 +156,81 @@ max_ammo = 100 icon = 'modular_ss220/objects/icons/ammo.dmi' icon_state = "mm127_box" + +// Тактическая бита Флота Nanotrasen +/obj/item/melee/baseball_bat/homerun/central_command + name = "тактическая бита Флота Nanotrasen" + desc = "Выдвижная тактическая бита Центрального Командования Nanotrasen. \ + В официальных документах эта бита проходит под элегантным названием \"Высокоскоростная система доставки СРП\". \ + Выдаваясь только самым верным и эффективным офицерам Nanotrasen, это оружие является одновременно символом статуса \ + и инструментом высшего правосудия." + slot_flags = SLOT_FLAG_BELT + w_class = WEIGHT_CLASS_SMALL + + var/on = FALSE + /// Force when concealed + force = 5 + /// Force when extended + var/force_on = 20 + + lefthand_file = 'modular_ss220/objects/icons/inhands/melee_lefthand.dmi' + righthand_file = 'modular_ss220/objects/icons/inhands/melee_righthand.dmi' + icon = 'modular_ss220/objects/icons/melee.dmi' + /// Item state when concealed + item_state = "centcom_bat_0" + /// Item state when extended + var/item_state_on = "centcom_bat_1" + /// Icon state when concealed + icon_state = "centcom_bat_0" + /// Icon state when extended + var/icon_state_on = "centcom_bat_1" + /// Sound to play when concealing or extending + var/extend_sound = 'sound/weapons/batonextend.ogg' + /// Attack verbs when concealed (created on Initialize) + attack_verb = list("hit", "poked") + /// Attack verbs when extended (created on Initialize) + var/list/attack_verb_on = list("smacked", "struck", "cracked", "beaten") + +/obj/item/melee/baseball_bat/homerun/central_command/pickup(mob/living/user) + . = ..() + if(!(user.mind.offstation_role)) + user.Weaken(10 SECONDS) + user.unEquip(src, force, silent = FALSE) + to_chat(user, span_userdanger("Это - оружие истинного правосудия. Тебе не дано обуздать его мощь.")) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.apply_damage(rand(force/2, force), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + else + user.adjustBruteLoss(rand(force/2, force)) + +/obj/item/melee/baseball_bat/homerun/central_command/attack_self(mob/user) + on = !on + + if(on) + to_chat(user, span_userdanger("Вы активировали [src.name] - время для правосудия!")) + item_state = item_state_on + icon_state = icon_state_on + w_class = WEIGHT_CLASS_HUGE + force = force_on + attack_verb = attack_verb_on + else + to_chat(user, span_notice("Вы деактивировали [src.name].")) + item_state = initial(item_state) + icon_state = initial(icon_state) + w_class = initial(w_class) + force = initial(force) + attack_verb = initial(attack_verb) + + homerun_able = on + // Update mob hand visuals + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.update_inv_l_hand() + H.update_inv_r_hand() + playsound(loc, extend_sound, 50, TRUE) + add_fingerprint(user) + +/obj/item/melee/baseball_bat/homerun/central_command/attack(mob/living/target, mob/living/user) + if(on) + homerun_ready = TRUE + . = ..() diff --git a/modular_ss220/objects/icons/inhands/melee_lefthand.dmi b/modular_ss220/objects/icons/inhands/melee_lefthand.dmi new file mode 100644 index 000000000000..03a217d2e15c Binary files /dev/null and b/modular_ss220/objects/icons/inhands/melee_lefthand.dmi differ diff --git a/modular_ss220/objects/icons/inhands/melee_righthand.dmi b/modular_ss220/objects/icons/inhands/melee_righthand.dmi new file mode 100644 index 000000000000..802a7b7052ea Binary files /dev/null and b/modular_ss220/objects/icons/inhands/melee_righthand.dmi differ diff --git a/modular_ss220/objects/icons/melee.dmi b/modular_ss220/objects/icons/melee.dmi new file mode 100644 index 000000000000..481ce4d8edff Binary files /dev/null and b/modular_ss220/objects/icons/melee.dmi differ diff --git a/modular_ss220/outfits/code/outfits.dm b/modular_ss220/outfits/code/outfits.dm index b35fc68b6dd6..5eaebc9de54e 100644 --- a/modular_ss220/outfits/code/outfits.dm +++ b/modular_ss220/outfits/code/outfits.dm @@ -74,6 +74,8 @@ /obj/item/ammo_box/speed_loader_mm127 = 3 ) +/datum/outfit/job/ntnavyofficer + l_pocket = /obj/item/melee/baseball_bat/homerun/central_command /obj/item/clothing/under/solgov/srt name = "marine uniform"