Further Polishing (#7167)

This commit is contained in:
FluffMedic
2023-11-04 17:04:58 -04:00
committed by GitHub
parent 8bcb92dc56
commit ca1a778e0a
10 changed files with 18587 additions and 16709 deletions
@@ -3,7 +3,7 @@
name = "wizard hat"
desc = "A pointy pixelated-looking hat, 0s and 1s dancing off the fabric"
icon_state = "redwizard"
armor = list(melee = 30, bullet = 30, laser = 65, energy = 65, bomb = 70, bio = 100, rad = 100)
armor = list(melee = 20, bullet = 20, laser = 60, energy = 60, bomb = 70, bio = 50, rad = 50)
siemens_coefficient = 0.1
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
@@ -16,7 +16,7 @@
name = "wizard robes"
desc = "A silky robe with 0s and 1s flying off the seams."
icon_state = "redwizard"
armor = list(melee = 30, bullet = 30, laser = 65, energy = 65, bomb = 70, bio = 100, rad = 100)
armor = list(melee = 20, bullet = 20, laser = 60, energy = 60, bomb = 70, bio = 50, rad = 50)
siemens_coefficient = 0.1
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
@@ -30,7 +30,7 @@
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)
armor = list(melee = 70, bullet = 70, laser = 40, energy = 40, bomb = 90, bio = 70, rad = 70)
siemens_coefficient = 0.1
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
@@ -43,7 +43,7 @@
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)
armor = list(melee = 70, bullet = 70, laser = 40, energy = 40, bomb = 90, bio = 70, rad = 70)
siemens_coefficient = 0.1
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
@@ -6,7 +6,7 @@
value = CATALOGUER_REWARD_HARD
/mob/living/simple_mob/vr/alchemistbee
name = "vr creation"
name = "large hardlight creature"
desc = "A digital creature"
icon = 'modular_chomp/icons/mob/alchemistbee.dmi'
icon_state = "beeliving"
@@ -11,8 +11,8 @@
icon_state = "imperion"
icon_living = "imperion"
desc = "A strange precursor mecha"
maxHealth = 200
health = 200
maxHealth = 300
health = 300
movement_cooldown = -1
unsuitable_atoms_damage = 0
projectiletype = /obj/item/projectile/energy/gaussrifle
@@ -20,6 +20,8 @@
damage_fatigue_mult = 0
has_repair_droid = TRUE
size_multiplier = 2.50
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
ranged_attack_delay = 1.5 SECONDS
@@ -85,6 +87,8 @@
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
size_multiplier = 2.50
wreckage = null
pilot_type = /mob/living/simple_mob/mechanical/mecha/imperion/phase2
@@ -117,7 +121,7 @@
playsound(src, 'sound/effects/turret/move2.wav', 50, 1)
/mob/living/simple_mob/mechanical/mecha/imperion/phase1/proc/launch_rockets(atom/target)
var/obj/item/projectile/P = new /obj/item/projectile/energy/dart(get_turf(src))
var/obj/item/projectile/P = new /obj/item/projectile/energy/excavate(get_turf(src))
P.launch_projectile(target, BP_TORSO, src)
/mob/living/simple_mob/mechanical/mecha/imperion/phase1/proc/launch_microsingularity(atom/target)
@@ -131,6 +135,7 @@
alpha = 215
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
size_multiplier = 2.25
wreckage = null
pilot_type = /mob/living/simple_mob/mechanical/mecha/imperion/phase3
@@ -163,13 +168,14 @@
melee_attack_delay = 2 SECOND
ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive/meleeimperion
size_multiplier = 2.00
wreckage = null
pilot_type = /mob/living/simple_mob/mechanical/mecha/imperion/phase4
special_attack_min_range = 3
special_attack_max_range = 14 //this thing will not let you recover during phase 3. It blitz you down, or you blitz it down.
special_attack_cooldown = 5 SECONDS
special_attack_cooldown = 2 SECONDS
/mob/living/simple_mob/mechanical/mecha/imperion/phase3/do_special_attack(atom/A)
// Teleport attack.
@@ -230,6 +236,8 @@
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
size_multiplier = 1.75
wreckage = null
pilot_type = /mob/living/simple_mob/mechanical/mecha/imperion/phase5
@@ -327,6 +335,8 @@
special_attack_cooldown = 5 SECONDS
melee_attack_delay = 1 SECOND
size_multiplier = 1.50
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
wreckage = null
@@ -18,8 +18,8 @@
faction = "vr"
maxHealth = 50
health = 50
maxHealth = 40
health = 40
movement_cooldown = 1
unsuitable_atoms_damage = 0
projectiletype = /obj/item/projectile/energy/homing_bolt/wizard
@@ -39,28 +39,28 @@
)
/mob/living/simple_mob/vr/firewiz
name = "vr creation"
name = "hardlight creation fire"
icon_state = "bookbat_red"
icon_living = "bookbat_red"
icon_dead = "bookbat_red_dead"
projectiletype = /obj/item/projectile/energy/homing_bolt/wizard/fire
/mob/living/simple_mob/vr/poisonwiz
name = "vr creation"
name = "hardlight creation poison"
icon_state = "bookbat_green"
icon_living = "bookbat_green"
icon_dead = "bookbat_green_dead"
projectiletype = /obj/item/projectile/energy/homing_bolt/wizard/poison
/mob/living/simple_mob/vr/lightingwiz
name = "vr creation"
name = "hardlight creation lighting"
icon_state = "bookbat_woody"
icon_living = "bookbat_woody"
icon_dead = "bookbat_woody_dead"
projectiletype = /obj/item/projectile/energy/homing_bolt/wizard/lighting
/mob/living/simple_mob/vr/frostwiz
name = "vr creation"
name = "hardlight creation frost"
icon_state = "bookbat_blue"
icon_living = "bookbat_blue"
icon_dead = "bookbat_blue_dead"
@@ -82,8 +82,8 @@
projectiletype = null
melee_attack_delay = 0 SECOND
melee_damage_lower = 6
melee_damage_upper = 6
melee_damage_lower = 8
melee_damage_upper = 8
/mob/living/simple_mob/vr/glitch/apply_melee_effects(var/atom/A)
if(isliving(A))
@@ -91,18 +91,18 @@
L.add_modifier(/datum/modifier/digitizing, 60 SECONDS)
/mob/living/simple_mob/vr/doomknight
name = "vr creation"
name = "hardlight creation doomknight"
projectiletype = null
maxHealth = 250
health = 250
maxHealth = 70
health = 70
movement_cooldown = 4
unsuitable_atoms_damage = 0
projectiletype = null
melee_attack_delay = 8 SECOND
melee_damage_lower = 0
melee_damage_upper = 0
melee_damage_lower = 30
melee_damage_upper = 30
/mob/living/simple_mob/vr/doomknight/apply_melee_effects(var/atom/A) //If you get hit by this slow thing, you have 5 minuites to live.
if(isliving(A))
@@ -113,6 +113,7 @@
//Spells
/obj/item/projectile/energy/homing_bolt/wizard
damage = 15
speed = 1.0
/obj/item/projectile/energy/homing_bolt/wizard/fire
modifier_type_to_apply = /datum/modifier/wizfire
@@ -141,7 +142,7 @@
on_created_text = "<span class='warning'>You are on digital fire.</span>"
on_expired_text = "<span class='notice'>You feel better.</span>"
stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot.
var/damage_per_tick = 0.2
var/damage_per_tick = 1.5
bleeding_rate_percent = 0.7
/datum/modifier/wizfire/tick()
@@ -155,7 +156,7 @@
on_created_text = "<span class='warning'>You are filled with digital lighting.</span>"
on_expired_text = "<span class='notice'>You feel better.</span>"
stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot.
damage_per_tick = 0.05
damage_per_tick = 1.0
incoming_fire_damage_percent = 1.1
/datum/modifier/wizpoison
@@ -6,17 +6,11 @@
melee_damage_lower = 15
melee_damage_upper = 22
attack_armor_pen = 50
var/grenade_type = /obj/item/weapon/grenade/spawnergrenade/riftwallers
var/grenade_timer = 5
heat_resist = 1
cold_resist = 1
movement_cooldown = -1.5
var/leap_warmup = 2 SECOND
var/leap_sound = 'sound/weapons/gauss_shoot.ogg'
var/jaunt_warning = 1.0 SECONDS // How long the jaunt telegraphing is.
var/jaunt_tile_speed = 15 // How long to wait between each tile. Higher numbers result in an easier to dodge tunnel attack.
projectiletype = /obj/item/projectile/energy/plasma/vepr/inversion
melee_attack_delay = 12 SECOND
melee_attack_delay = 4 SECOND
ranged_attack_delay = 1.5 SECONDS
special_attack_min_range = 1
special_attack_max_range = 7
@@ -75,190 +69,53 @@
launch_microsingularity(A)
/mob/living/simple_mob/humanoid/cultist/magus/rift/proc/launch_microsingularity(atom/target)
set waitfor = FALSE
var/obj/item/weapon/grenade/G = new grenade_type(get_turf(src))
if(istype(G))
G.throw_at(G.throw_range, G.throw_speed, src)
G.det_time = grenade_timer //CHOMPEdit
G.activate(src) //CHOMPEdit
set_AI_busy(FALSE)
new /mob/living/simple_mob/vore/demonAI (src.loc)
/mob/living/simple_mob/humanoid/cultist/magus/rift/proc/electric_defense(atom/target)
set waitfor = FALSE
set_AI_busy(TRUE)
var/obj/item/projectile/P = new /obj/item/projectile/energy/fireball(get_turf(src))
P.launch_projectile(target, BP_TORSO, src)
// Save where we're gonna go soon.
var/turf/destination = get_turf(target)
var/turf/starting_turf = get_turf(src)
// Telegraph to give a small window to dodge if really close.
flick("phase_shift",target)
icon_state = "bloodin"
sleep(jaunt_warning) // For the telegraphing.
// Do the dig!
visible_message(span("danger","\The [src] vanishes into thin air \the [target]!"))
flick("phase_shift",target)
icon_state = "phase_shift"
if(handle_jaunt(destination) == FALSE)
set_AI_busy(FALSE)
flick("phase_shift2",target)
icon_state = "bloodout"
/mob/living/simple_mob/humanoid/cultist/magus/rift/proc/launch_rockets(atom/target)
if(!target)
to_chat(src, span("warning", "There's nothing to teleport to."))
return FALSE
// Did we make it?
if(!(src in destination))
set_AI_busy(FALSE)
icon_state = "bloodout"
flick("phase_shift2",target)
return FALSE
var/list/nearby_things = range(1, target)
var/list/valid_turfs = list()
var/overshoot = TRUE
// Test if something is at destination.
for(var/mob/living/L in destination)
if(L == src)
// All this work to just go to a non-dense tile.
for(var/turf/potential_turf in nearby_things)
var/valid_turf = TRUE
if(potential_turf.density)
continue
for(var/atom/movable/AM in potential_turf)
if(AM.density)
valid_turf = FALSE
if(valid_turf)
valid_turfs.Add(potential_turf)
visible_message(span("danger","\The [src] appears in a flurry of slashes \the [L]!"))
playsound(L, 'sound/weapons/heavysmash.ogg', 75, 1)
L.Weaken(3)
overshoot = FALSE
if(!overshoot) // We hit the target, or something, at destination, so we're done.
set_AI_busy(FALSE)
icon_state = "bloodout"
flick("phase_shift2",target)
return TRUE
// Otherwise we need to keep going.
to_chat(src, span("warning", "You overshoot your target!"))
playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1)
var/dir_to_go = get_dir(starting_turf, destination)
for(var/i = 1 to rand(2, 4))
destination = get_step(destination, dir_to_go)
if(handle_jaunt(destination) == FALSE)
set_AI_busy(FALSE)
icon_state = "bloodout"
flick("phase_shift2",target)
if(!(valid_turfs.len))
to_chat(src, span("warning", "There wasn't an unoccupied spot to teleport to."))
return FALSE
set_AI_busy(FALSE)
icon_state = "bloodout"
flick("phase_shift2",target)
return FALSE
var/turf/target_turf = pick(valid_turfs)
var/turf/T = get_turf(src)
var/datum/effect/effect/system/spark_spread/s1 = new /datum/effect/effect/system/smoke_spread
s1.set_up(5, 1, T)
var/datum/effect/effect/system/spark_spread/s2 = new /datum/effect/effect/system/smoke_spread
s2.set_up(5, 1, target_turf)
T.visible_message(span("notice", "\The [src] vanishes!"))
s1.start()
/mob/living/simple_mob/humanoid/cultist/magus/rift/proc/launch_rockets(atom/A)
set waitfor = FALSE
set_AI_busy(TRUE)
// Save where we're gonna go soon.
var/turf/destination = get_turf(A)
var/turf/starting_turf = get_turf(src)
// Telegraph to give a small window to dodge if really close.
flick("phase_shift",A)
icon_state = "bloodin"
sleep(jaunt_warning) // For the telegraphing.
// Do the dig!
visible_message(span("danger","\The [src] vanishes into thin air \the [A]!"))
flick("phase_shift",A)
icon_state = "bloodin"
if(handle_jaunt(destination) == FALSE)
set_AI_busy(FALSE)
flick("phase_shift2",A)
icon_state = "bloodout"
return FALSE
// Did we make it?
if(!(src in destination))
set_AI_busy(FALSE)
icon_state = "bloodout"
flick("phase_shift2",A)
return FALSE
var/overshoot = TRUE
// Test if something is at destination.
for(var/mob/living/L in destination)
if(L == src)
continue
visible_message(span("danger","\The [src] appears in a flurry of slashes \the [L]!"))
playsound(L, 'sound/weapons/heavysmash.ogg', 75, 1)
L.Weaken(3)
overshoot = FALSE
if(!overshoot) // We hit the target, or something, at destination, so we're done.
set_AI_busy(FALSE)
icon_state = "phase_shift2"
flick("phase_shift2",A)
return TRUE
// Otherwise we need to keep going.
to_chat(src, span("warning", "You overshoot your target!"))
playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1)
var/dir_to_go = get_dir(starting_turf, destination)
for(var/i = 1 to rand(2, 4))
destination = get_step(destination, dir_to_go)
if(handle_jaunt(destination) == FALSE)
set_AI_busy(FALSE)
icon_state = "bloodout"
flick("phase_shift2",A)
return FALSE
set_AI_busy(FALSE)
icon_state = "bloodout"
flick("phase_shift2",A)
return FALSE
// Does the jaunt movement
/mob/living/simple_mob/humanoid/cultist/magus/rift/proc/handle_jaunt(turf/destination)
var/turf/T = get_turf(src) // Hold our current tile.
// Regular tunnel loop.
for(var/i = 1 to get_dist(src, destination))
if(stat)
return FALSE // We died or got knocked out on the way.
if(loc == destination)
break // We somehow got there early.
// Update T.
T = get_step(src, get_dir(src, destination))
if(T.check_density(ignore_mobs = TRUE))
to_chat(src, span("critical", "You hit something really solid!"))
playsound(src, "punch", 75, 1)
Weaken(5)
add_modifier(/datum/modifier/tunneler_vulnerable, 10 SECONDS)
return FALSE // Hit a wall.
// Get into the tile.
forceMove(T)
/mob/living/simple_mob/humanoid/cultist/magus/rift/should_special_attack(atom/A)
// Make sure its possible for the wraith to reach the target so it doesn't try to go through a window.
var/turf/destination = get_turf(A)
var/turf/starting_turf = get_turf(src)
var/turf/T = starting_turf
for(var/i = 1 to get_dist(starting_turf, destination))
if(T == destination)
break
T = get_step(T, get_dir(T, destination))
if(T.check_density(ignore_mobs = TRUE))
return FALSE
return T == destination
forceMove(target_turf)
playsound(target_turf, 'sound/effects/phasein.ogg', 50, 1)
to_chat(src, span("notice", "You teleport to \the [target_turf]."))
target_turf.visible_message(span("warning", "\The [src] appears!"))
s2.start()
/obj/item/weapon/grenade/spawnergrenade/riftwallers
name = "manhack delivery grenade"
@@ -1,4 +1,4 @@
//Cataloguer things
//Cataloguer things
/datum/category_item/catalogue/fauna/livingcandy
name = "Living Candy"
desc = "Upon investigation of the strange creatures, a mix of \
@@ -23,15 +23,17 @@
faction = "candy"
maxHealth = 25
health = 25
maxHealth = 20
health = 20
movement_cooldown = 2
melee_attack_delay = 3 SECOND
melee_attack_delay = 2 SECOND
can_be_drop_prey = TRUE
unsuitable_atoms_damage = 0
melee_miss_chance = 0
melee_damage_lower = 8
melee_damage_upper = 15
damage_fatigue_mult = 0 //Candy creatures. They will fight to the bitter end unaffected by their wounds. Also they have 25 health, do they really need slowdown?
/mob/living/simple_mob/vore/candy
vore_active = 1
@@ -206,9 +208,6 @@
icon_living = "blue"
icon_dead = "blue_dead"
maxHealth = 25
health = 25
melee_damage_lower = 7
melee_damage_upper = 12
@@ -230,11 +229,11 @@
icon_living = "red"
icon_dead = "red_dead"
maxHealth = 82
health = 82
maxHealth = 50
health = 50
melee_damage_lower = 2
melee_damage_upper = 2
melee_damage_lower = 15
melee_damage_upper = 25
/mob/living/simple_mob/vore/candy/redcabold/apply_melee_effects(atom/A)
..()
@@ -259,9 +258,6 @@
icon_living = "yellow"
icon_dead = "yellow_dead"
maxHealth = 25
health = 25
melee_damage_lower = 8
melee_damage_upper = 15
@@ -283,9 +279,6 @@
icon_living = "orange"
icon_dead = "orange_dead"
maxHealth = 50
health = 50
melee_damage_lower = 7
melee_damage_upper = 12
@@ -307,9 +300,6 @@
icon_living = "purple"
icon_dead = "purple_dead"
maxHealth = 25
health = 25
melee_damage_lower = 7
melee_damage_upper = 12
@@ -324,6 +314,25 @@
continue
L.add_modifier(/datum/modifier/aura/candy_purple, null, src)
/mob/living/simple_mob/vore/candy/greencabold //Nyoooooom
name = "gummy kobold"
desc = "A creature made of candy"
icon_state = "green"
icon_living = "green"
icon_dead = "green_dead"
movement_cooldown = -2
melee_attack_delay = 1 SECOND
melee_damage_lower = 7
melee_damage_upper = 12
/mob/living/simple_mob/vore/candy/greencabold/apply_melee_effects(var/atom/A)
if(isliving(A))
var/mob/living/L = A
L.add_modifier(/datum/modifier/deep_wounds, 15 SECONDS)
/mob/living/simple_mob/vore/candy/marshmellowserpent //Long range grab
name = "marshmellow serpent"
desc = "A creature made of candy"
@@ -333,9 +342,6 @@
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
maxHealth = 25
health = 25
melee_damage_lower = 4
melee_damage_upper = 8
@@ -405,4 +411,313 @@
desc = "You feel somewhat gooey."
stacks = MODIFIER_STACK_FORBID
aura_max_distance = 5
incoming_damage_percent = 0.9
incoming_damage_percent = 0.9
//Boss Fight
/mob/living/simple_mob/vore/candy/ouroboros
name = "candy critter"
desc = "A creature made of candy"
icon = 'modular_chomp/icons/mob/candy.dmi'
icon_state = "ouroboros"
icon_living = "ouroboros"
icon_dead = "slainouroboros"
catalogue_data = list(/datum/category_item/catalogue/fauna/livingcandy)
mob_class = MOB_CLASS_ABERRATION
ai_holder_type = /datum/ai_holder/simple_mob/melee
faction = "candy"
icon_state = "ouroboros"
icon_living = "ouroboros"
icon_dead = "slainouroboros"
maxHealth = 300
health = 300
armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 20, bio = 100, rad = 100) //armor cause boss
movement_cooldown = 0
melee_attack_delay = 1 SECOND
can_be_drop_prey = TRUE
unsuitable_atoms_damage = 0
melee_damage_lower = 25
melee_damage_upper = 35
var/grenade_type = /obj/item/weapon/grenade/concussion
var/grenade_timer = 1
special_attack_min_range = 1
special_attack_max_range = 15
special_attack_cooldown = 7 SECONDS
/mob/living/simple_mob/vore/candy/ouroboros/bullet_act(var/obj/item/projectile/Proj)
new /obj/random/mob/candycritter (src.loc)
/mob/living/simple_mob/vore/candy/ouroboros/do_special_attack(atom/A)
switch(a_intent)
if(I_GRAB)
summon_combo(A)
if(I_HURT)
barrage_combo(A)
if(I_DISARM)
debuff_combo(A)
/mob/living/simple_mob/vore/candy/ouroboros/proc/summon_combo(atom/target)
visible_message(span("warning", "\The [src] calls for help!"))
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
sleep(2.0 SECONDS)
visible_message(span("warning", "\The [src] calls for help!"))
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
sleep(1.5 SECONDS)
visible_message(span("warning", "\The [src] calls for help!"))
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
sleep(1.0 SECONDS)
visible_message(span("warning", "\The [src] calls for help!"))
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
visible_message(span("warning", "\The [src] begins to heal!"))
sleep(3.5 SECONDS)
adjustBruteLoss(-35)
adjustFireLoss(-35)
adjustToxLoss(-35)
adjustOxyLoss(-35)
adjustCloneLoss(-35)
/mob/living/simple_mob/vore/candy/ouroboros/proc/barrage_combo(atom/target)
if(prob(50))
sleep(0.5 SECONDS)
var/obj/item/projectile/P = new /obj/item/projectile/arc/fragmentation/cherrybomb(get_turf(src))
P.launch_projectile(target, BP_TORSO, src)
if(prob(50))
sleep(0.5 SECONDS)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
else
sleep(0.5 SECONDS)
var/obj/item/projectile/V = new /obj/item/projectile/bullet/cmblast(get_turf(src))
V.launch_projectile(target, BP_TORSO, src)
else
sleep(0.5 SECONDS)
var/obj/item/projectile/A = new /obj/item/projectile/bullet/cmblast(get_turf(src))
A.launch_projectile(target, BP_TORSO, src)
if(prob(50))
sleep(0.5 SECONDS)
var/obj/item/projectile/B = new /obj/item/projectile/arc/fragmentation/cherrybomb(get_turf(src))
B.launch_projectile(target, BP_TORSO, src)
else
sleep(0.5 SECONDS)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
/mob/living/simple_mob/vore/candy/ouroboros/proc/debuff_combo(atom/target)
visible_message(span("warning", "\The [src] prepares to let out a thunderous roar!"))
sleep(1.5 SECONDS)
var/obj/item/weapon/grenade/G = new grenade_type(get_turf(src))
if(istype(G))
G.throw_at(G.throw_range, G.throw_speed, src)
G.det_time = grenade_timer //CHOMPEdit
G.activate(src) //CHOMPEdit
if(prob(25))
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
else
var/obj/item/projectile/P = new /obj/item/projectile/bullet/cmblast(get_turf(src))
P.launch_projectile(target, BP_TORSO, src)
sleep(0.5)
P.launch_projectile(target, BP_TORSO, src)
/datum/ai_holder/simple_mob/intentional/ouroboros
unconscious_vore = TRUE
handle_corpse = TRUE
vision_range = 13
respect_alpha = FALSE
lose_target_timeout = 60 SECONDS
intelligence_level = AI_SMART
/datum/ai_holder/simple_mob/intentional/ouroboros/proc/update_health()
if(prob(35))
holder.a_intent = I_GRAB
if(prob(35))
holder.a_intent = I_DISARM
else
holder.a_intent = I_HURT
/obj/random/mob/candycritter
name = "Random Gummy Candy Critter"
desc = "This is a random candy critter."
overwrite_hostility = 1
mob_faction = "candy"
/obj/random/mob/candycritter/item_to_spawn()
return pick(prob(40);/mob/living/simple_mob/vore/candy/purplecabold,
prob(40);/mob/living/simple_mob/vore/candy/bluecabold,
prob(40);/mob/living/simple_mob/vore/candy/greencabold,
prob(40);/mob/living/simple_mob/vore/candy/yellowcabold,
prob(40);/mob/living/simple_mob/vore/candy/orangecabold,
prob(40);/mob/living/simple_mob/vore/candy/redcabold,
prob(40);/mob/living/simple_mob/vore/candy/peppermint
)
/obj/item/projectile/bullet/cmblast
use_submunitions = 1
only_submunitions = 1
range = 0
embed_chance = 0
submunition_spread_max = 1800
submunition_spread_min = 500
submunitions = list(/obj/item/projectile/energy/chocosphere = 12)
/obj/item/projectile/energy/chocosphere
name = "choclate sphere"
icon = 'modular_chomp/icons/mob/candy.dmi'
icon_state = "choclate_sphere"
damage = 20
armor_penetration = 30
damage_type = BURN
check_armour = "energy"
speed = 4.0
flash_strength = 0
modifier_type_to_apply = /datum/modifier/chilled
modifier_duration = 6 SECONDS
/obj/item/projectile/energy/canearrow
name = "candy cane arrow"
icon = 'modular_chomp/icons/mob/candy.dmi'
icon_state = "choclate_sphere"
damage = 15
armor_penetration = 40
damage_type = BURN
check_armour = "laser"
speed = 2.5
flash_strength = 0
modifier_type_to_apply = /datum/modifier/grievous_wounds
modifier_duration = 12 SECONDS
/obj/item/projectile/arc/fragmentation/cherrybomb
name = "cherry bomb"
icon = 'modular_chomp/icons/mob/candy.dmi'
icon_state = "cherry_bomb"
fragment_amount = 3
spread_range = 7
speed = 1.5
fragment_types = list(
/obj/item/projectile/bullet/cherrypit
)
/obj/item/projectile/bullet/cherrypit
name = "cherry bomb"
icon = 'modular_chomp/icons/mob/candy.dmi'
icon_state = "cherry_pit"
damage = 25
armor_penetration = 30
//more critters
//antimelee
/mob/living/simple_mob/vore/candy/peppermint
name = "peppermint turtle"
desc = "A creature made of candy, it's peppermint looking shell seeming diffcult to get a good hit on, but fragile if well struck."
icon = 'modular_chomp/icons/mob/candy.dmi'
icon_state = "peppermint"
icon_living = "peppermint"
icon_dead = "peppermint_dead"
faction = "candy"
maxHealth = 10
health = 10
/mob/living/simple_mob/vore/candy/peppermint/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(O.force)
if(prob(80))
visible_message("<span class='danger'>\The [src] deflects \the [O] with its shell!</span>")
if(user)
ai_holder.react_to_attack(user)
return
else
..()
else
to_chat(user, "<span class='warning'>This weapon is ineffective, it does no damage.</span>")
visible_message("<span class='warning'>\The [user] gently taps [src] with \the [O].</span>")
/mob/living/simple_mob/vore/candy/worm
name = "hardcandy worm"
desc = "A creature made of candy."
icon = 'modular_chomp/icons/mob/candy.dmi'
icon_state = "worm"
icon_living = "worm"
icon_dead = "worm_dead"
faction = "candy"
maxHealth = 60
health = 60
/mob/living/simple_mob/vore/candy/worm/death()
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
new /obj/random/mob/candycritter (src.loc)
/mob/living/simple_mob/vore/candy/worm/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/vore/candy/worm/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/vore/candy/worm/redcabold/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!")
/mob/living/simple_mob/vore/candy/peppermint/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/vore/candy/peppermint/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/vore/candy/peppermint/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!")
v
@@ -1,12 +1,12 @@
/obj/item/weapon/gun/magic/firestaff/vrwizard
name = "vr staff"
name = "hardlight staff"
desc = "A magical staff brimming with energy."
icon = 'icons/obj/wizard.dmi'
icon_state = "staffoffire"
item_state = "staff"
fire_sound = 'sound/weapons/emitter.ogg'
w_class = ITEMSIZE_HUGE
checks_antimagic = TRUE
checks_antimagic = FALSE
max_charges = 10
charges = 0
recharge_rate = 2
@@ -38,5 +38,4 @@
/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
color = "#660066"