MoL Update 2/X (#6981)

This commit is contained in:
FluffMedic
2023-09-19 02:53:37 -04:00
committed by GitHub
parent b90c0a12ec
commit d061f93cbe
8 changed files with 2761 additions and 1822 deletions

View File

@@ -104,6 +104,9 @@
/area/awaymission/mol/engi /area/awaymission/mol/engi
name = "Lab Enginering" name = "Lab Enginering"
/area/awaymission/mol/hardlightentrance
name = "Hardlight Zone Entrance"
/obj/structure/prop/blackbox/maddnesslab /obj/structure/prop/blackbox/maddnesslab
catalogue_data = list(/datum/category_item/catalogue/information/blackbox/maddnesslab) catalogue_data = list(/datum/category_item/catalogue/information/blackbox/maddnesslab)

File diff suppressed because it is too large Load Diff

View File

@@ -23,8 +23,34 @@
min_pressure_protection = 0 * ONE_ATMOSPHERE min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 3 * ONE_ATMOSPHERE max_pressure_protection = 3 * ONE_ATMOSPHERE
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/backpack) allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency/oxygen)
/obj/item/clothing/head/darkvrwizard
name = "wizard hat"
desc = "The hat holding the most attack and defense"
icon_state = "redwizard"
color = "#660066"
armor = list(melee = 70, bullet = 70, laser = 40, energy = 40, bomb = 70, bio = 100, rad = 100)
siemens_coefficient = 0.1
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 3 * ONE_ATMOSPHERE
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/suit/darkvrwizard
name = "wizard robes"
desc = "Robes holding the most attack and defense."
icon_state = "psyamp"
armor = list(melee = 70, bullet = 70, laser = 40, energy = 40, bomb = 70, bio = 100, rad = 100)
siemens_coefficient = 0.1
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 3 * ONE_ATMOSPHERE
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency/oxygen)
//Candy section //Candy section
/obj/item/clothing/head/psy_crown/candycrown /obj/item/clothing/head/psy_crown/candycrown

View File

@@ -0,0 +1,313 @@
/datum/category_item/catalogue/fauna/alchemistbee
name = "VR Creations"
desc = "A creature made of hardlight. \
There appears to be remnants of code within the strange construct, \
of dialog, and player interaction. But all that code seems inactive"
value = CATALOGUER_REWARD_HARD
/mob/living/simple_mob/vr/alchemistbee
name = "vr creation"
desc = "A digital creature"
icon = 'modular_chomp/icons/mob/alchemistbee.dmi'
icon_state = "beeliving"
icon_living = "beeliving"
icon_dead = "beedead"
catalogue_data = list(/datum/category_item/catalogue/fauna/alchemistbee)
faction = "terror" //Ai seemed bugged during test, and it fighting the book bats might be niche but nice
maxHealth = 250
health = 250
movement_cooldown = 0
unsuitable_atoms_damage = 0
projectiletype = /obj/item/projectile/energy/homing_bolt/wizard/boss
melee_attack_delay = 1 SECOND
ai_holder_type = /datum/ai_holder/simple_mob/intentional/alchemistbee
melee_damage_lower = 20
melee_damage_upper = 20
special_attack_min_range = 1
special_attack_max_range = 14
special_attack_cooldown = 10
loot_list = list(/obj/item/clothing/head/vrwizard = 60,
/obj/item/clothing/suit/vrwizard = 60,
/obj/item/weapon/gun/magic/firestaff/vrwizard/fire = 60,
/obj/item/weapon/gun/magic/firestaff/vrwizard/frost = 60,
/obj/item/weapon/gun/magic/firestaff/vrwizard/poison = 60,
/obj/item/weapon/gun/magic/firestaff/vrwizard/lighting = 60,
/obj/item/weapon/gun/magic/firestaff/vrwizard/nuclear = 100,
/obj/item/clothing/head/darkvrwizard = 100,
/obj/item/clothing/suit/darkvrwizard = 100
)
/mob/living/simple_mob/vr/alchemistbee
vore_active = 1
vore_capacity = 6
vore_max_size = RESIZE_HUGE
vore_min_size = RESIZE_SMALL
vore_pounce_chance = 0 // Beat them into crit before eating.
vore_icons = null
//bluenom
/mob/living/simple_mob/vr/alchemistbee/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 1
/mob/living/simple_mob/vr/alchemistbee/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/vr/alchemistbee/init_vore()
if(!voremob_loaded)
return
.=..()
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "The fearsome predator gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach."
B.emote_lists[DM_HOLD] = list(
"Your surroundings are momentarily filled with your predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.",)
B.emote_lists[DM_DIGEST] = list(
"Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!")
/obj/item/projectile/energy/homing_bolt/wizard/boss
damage = 10
modifier_type_to_apply = /datum/modifier/wizweakness
modifier_duration = 30 SECONDS
icon_state = "arcane_barrage"
/datum/modifier/wizweakness
name = "wizweakness"
desc = "Can you even see this in game?"
mob_overlay_state = "cult_aura"
on_created_text = "<span class='warning'>You feel incrediably vulnerable.</span>"
on_expired_text = "<span class='notice'>You feel better.</span>"
stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot.
incoming_damage_percent = 2 // Adjusts all incoming damage.
incoming_brute_damage_percent = 2 // Only affects bruteloss.
incoming_fire_damage_percent = 2 // Only affects fireloss.
incoming_tox_damage_percent = 2 // Only affects toxloss.
incoming_oxy_damage_percent = 2 // Only affects oxyloss.
//Trying to learn from the AADG's ai and make my own
/datum/ai_holder/simple_mob/intentional/alchemistbee
conserve_ammo = FALSE
vision_range = 16
var/closest_desired_distance = 3 // Otherwise run up to them to be able to potentially shock or punch them.
var/chemblast_radius = 4 // How big to assume electric defense's area is.
var/dangerbolt_radius = 2 // Same but for microsingulo pull.
var/homingcluster_radius = 2 // Explosion radius for the rockets.
var/chemblast_threshold = 3 // How many non-targeted people are needed in close proximity before electric defense is viable.
var/dangerbolt_threshold = 1 // Similar to above, but uses an area around the target.
/datum/ai_holder/simple_mob/intentional/alchemistbee/on_engagement(atom/A)
// Make the AI backpeddle if using an AoE special attack.
var/list/risky_intents = list(I_GRAB, I_HURT) // Mini-singulo and missiles.
if(holder.a_intent in risky_intents)
var/closest_distance = 3
switch(holder.a_intent) // Plus one just in case.
if(I_HURT)
closest_distance = homingcluster_radius + 3
if(I_GRAB)
closest_distance = dangerbolt_radius + 3
if(get_dist(holder, A) <= closest_distance)
holder.IMove(get_step_away(holder, A, closest_distance))
// Otherwise get up close and personal.
else if(get_dist(holder, A) > closest_desired_distance)
holder.IMove(get_step_towards(holder, A))
/datum/ai_holder/simple_mob/intentional/alchemistbee/pre_special_attack(atom/A)
if(isliving(A))
var/mob/living/target = A
// If we're surrounded, Electric Defense will quickly fix that.
var/tally = 0
var/list/potential_targets = list_targets() // Returns list of mobs and certain objects like mechs and turrets.
for(var/atom/movable/AM in potential_targets)
if(get_dist(holder, AM) > chemblast_radius)
continue
if(!can_attack(AM))
continue
tally++
// Should we shock them?
if(tally >= chemblast_threshold || get_dist(target, holder) <= chemblast_radius)
holder.a_intent = I_DISARM
return
for(var/atom/movable/AM in potential_targets)
if(get_dist(target, AM) > dangerbolt_radius)
continue
if(!can_attack(AM))
continue
if(AM.anchored)
tally--
else
tally++
if(tally >= dangerbolt_threshold)
holder.a_intent = I_GRAB
else
holder.a_intent = I_HURT
else
if(get_dist(holder, A) >= homingcluster_radius + 1)
holder.a_intent = I_HURT
else
holder.a_intent = I_DISARM
/mob/living/simple_mob/vr/alchemistbee/do_special_attack(atom/A)
. = TRUE
switch(a_intent)
if(I_DISARM)
chemblast(A)
if(I_HURT)
homingcluster(A)
if(I_GRAB)
dangerbolt(A)
/mob/living/simple_mob/vr/alchemistbee/proc/chemblast(atom/target)
set waitfor = FALSE
Beam(target, icon_state = "sat_beam", time = 1.5 SECONDS, maxdistance = INFINITY)
visible_message(span("warning", "\The [src] prepares a pouch of vials!"))
sleep(0.5 SECONDS)
if(prob(25))
visible_message(span("warning", "\The [src] throws a blue vial!"))
var/obj/item/projectile/B = new /obj/item/projectile/arc/vial/frostvial(get_turf(src))
B.launch_projectile(target, BP_TORSO, src)
if(prob(25))
visible_message(span("warning", "\The [src] throws a green vial!"))
var/obj/item/projectile/B = new /obj/item/projectile/arc/vial/poisonvial(get_turf(src))
B.launch_projectile(target, BP_TORSO, src)
if(prob(25))
visible_message(span("warning", "\The [src] throws a red vial!"))
var/obj/item/projectile/B = new /obj/item/projectile/arc/vial/firevial(get_turf(src))
B.launch_projectile(target, BP_TORSO, src)
else
visible_message(span("warning", "\The [src] throws a strange vial"))
var/obj/item/projectile/A = new /obj/item/projectile/arc/vial/lightingvial(get_turf(src))
A.launch_projectile(target, BP_TORSO, src)
visible_message(span("warning", "\The [src] puts them pouch away."))
/mob/living/simple_mob/vr/alchemistbee/proc/homingcluster(atom/target)
var/obj/item/projectile/A = new /obj/item/projectile/bullet/homingcluster(get_turf(src))
A.launch_projectile(target, BP_TORSO, src)
/mob/living/simple_mob/vr/alchemistbee/proc/dangerbolt(atom/target)
visible_message(span("warning", "\The [src] prepares a powerful spell!"))
Beam(target, icon_state = "sat_beam", time = 2.0 SECONDS, maxdistance = INFINITY)
sleep(1.5 SECONDS)
var/obj/item/projectile/A = new /obj/item/projectile/energy/nuclearblast(get_turf(src))
A.launch_projectile(target, BP_TORSO, src)
/obj/item/projectile/bullet/homingcluster
use_submunitions = 1
only_submunitions = 1
range = 0
embed_chance = 0
submunition_spread_max = 1200
submunition_spread_min = 200
submunitions = list(/obj/item/projectile/energy/homing_bolt/wizard/fire = 1, /obj/item/projectile/energy/homing_bolt/wizard/frost = 1, /obj/item/projectile/energy/homing_bolt/wizard/poison = 1, /obj/item/projectile/energy/homing_bolt/wizard/lighting = 1)
//I desire arcing projectiles with smoke. Wish this was a general proc for projectiles
/obj/item/projectile/arc/vial
name = "vial"
icon = 'modular_chomp/icons/obj/vialprojectile.dmi'
icon_state = "blue_vial"
var/splatter = FALSE // Will this make a cloud of reagents?
var/splatter_volume = 5 // The volume of its chemical container, for said cloud of reagents.
var/list/my_chems = list("mold")
/obj/item/projectile/arc/vial/on_impact(var/atom/A)
if(splatter)
var/turf/location = get_turf(src)
var/datum/effect/effect/system/smoke_spread/chem/blob/S = new /datum/effect/effect/system/smoke_spread/chem/blob
S.attach(location)
S.set_up(reagents, rand(1, splatter_volume), 0, location)
playsound(location, 'sound/effects/slime_squish.ogg', 30, 1, -3)
spawn(0)
S.start()
..()
/obj/item/projectile/arc/vial/proc/ready_chemicals()
if(reagents)
var/reagent_vol = (round((splatter_volume / my_chems.len) * 100) / 100) //Cut it at the hundreds place, please.
for(var/reagent in my_chems)
reagents.add_reagent(reagent, reagent_vol)
/obj/item/projectile/arc/vial/frostvial
icon_state = "blue_vial"
damage = 10
armor_penetration = 0
damage_type = BRUTE
splatter_volume = 60
my_chems = list("frostoil")
modifier_type_to_apply = /datum/modifier/wizpoison/frost
modifier_duration = 15 SECONDS
splatter = TRUE
/obj/item/projectile/arc/vial/poisonvial
icon_state = "green_vial"
damage = 10
armor_penetration = 0
damage_type = BRUTE
splatter_volume = 60
my_chems = list("toxin")
modifier_type_to_apply = /datum/modifier/wizpoison
modifier_duration = 15 SECONDS
splatter = TRUE
/obj/item/projectile/arc/vial/firevial
icon_state = "red_vial"
damage = 10
armor_penetration = 0
damage_type = BRUTE
splatter_volume = 60
my_chems = list("sacid")
modifier_type_to_apply = /datum/modifier/wizfire
modifier_duration = 15 SECONDS
splatter = TRUE
/obj/item/projectile/arc/vial/lightingvial
icon_state = "orange_vial"
damage = 10
armor_penetration = 0
damage_type = BRUTE
splatter_volume = 60
my_chems = list("shredding_nanites")
modifier_type_to_apply = /datum/modifier/wizfire/lighting
modifier_duration = 15 SECONDS
splatter = TRUE
/obj/item/projectile/energy/nuclearblast
name = "nuclear blast"
icon_state = "plasma"
damage = 25
armor_penetration = 50
damage_type = BURN
check_armour = "energy"
agony = 50
speed = 24.0
modifier_type_to_apply = /datum/modifier/grievous_wounds
modifier_duration = 120 SECONDS
flash_strength = 15

View File

@@ -34,3 +34,9 @@
description_info = "Will slow down and minorly poison targets." description_info = "Will slow down and minorly poison targets."
projectile_type = /obj/item/projectile/energy/homing_bolt/wizard/frost projectile_type = /obj/item/projectile/energy/homing_bolt/wizard/frost
color = "#00CCFF" color = "#00CCFF"
/obj/item/weapon/gun/magic/firestaff/vrwizard/nuclear
description_info = "A high powered staff that burns through energy quickly but unleashes high energy bolts."
projectile_type = /obj/item/projectile/energy/nuclearblast
color = "#660066"
max_charges = 4

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

View File

@@ -4722,6 +4722,7 @@
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\animal\spider.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\animal\spider.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\animal\space\alien.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\animal\space\alien.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\animal\space\mouse_army_ch.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\animal\space\mouse_army_ch.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\gateway\alchemistbee.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\gateway\imperion.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\gateway\imperion.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\gateway\vistors.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\gateway\vistors.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\gateway\wizards.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\gateway\wizards.dm"