Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit765
This commit is contained in:
@@ -24,6 +24,8 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
var/list/blacklisted_quirks = list(/datum/quirk/nonviolent,/datum/quirk/mute) // Quirks that will be removed upon gaining this antag. Pacifist and mute are default.
|
||||
var/threat = 0 // Amount of threat this antag poses, for dynamic mode
|
||||
|
||||
var/list/skill_modifiers
|
||||
|
||||
/datum/antagonist/New()
|
||||
GLOB.antagonists += src
|
||||
typecache_datum_blacklist = typecacheof(typecache_datum_blacklist)
|
||||
@@ -68,15 +70,19 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
|
||||
//Proc called when the datum is given to a mind.
|
||||
/datum/antagonist/proc/on_gain()
|
||||
if(owner && owner.current)
|
||||
if(!silent)
|
||||
greet()
|
||||
apply_innate_effects()
|
||||
give_antag_moodies()
|
||||
remove_blacklisted_quirks()
|
||||
if(is_banned(owner.current) && replace_banned)
|
||||
replace_banned_player()
|
||||
SEND_SIGNAL(owner.current, COMSIG_MOB_ANTAG_ON_GAIN, src)
|
||||
if(!(owner?.current))
|
||||
return
|
||||
if(!silent)
|
||||
greet()
|
||||
apply_innate_effects()
|
||||
give_antag_moodies()
|
||||
remove_blacklisted_quirks()
|
||||
if(is_banned(owner.current) && replace_banned)
|
||||
replace_banned_player()
|
||||
if(skill_modifiers)
|
||||
for(var/A in skill_modifiers)
|
||||
ADD_SINGLETON_SKILL_MODIFIER(owner, A, type)
|
||||
SEND_SIGNAL(owner.current, COMSIG_MOB_ANTAG_ON_GAIN, src)
|
||||
|
||||
/datum/antagonist/proc/is_banned(mob/M)
|
||||
if(!M)
|
||||
@@ -99,6 +105,8 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
clear_antag_moodies()
|
||||
if(owner)
|
||||
LAZYREMOVE(owner.antag_datums, src)
|
||||
for(var/A in skill_modifiers)
|
||||
owner.remove_skill_modifier(GET_SKILL_MOD_ID(A, type))
|
||||
if(!silent && owner.current)
|
||||
farewell()
|
||||
var/datum/team/team = get_team()
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
landmark_type = /obj/effect/landmark/abductor/agent
|
||||
greet_text = "Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve."
|
||||
show_in_antagpanel = TRUE
|
||||
skill_modifiers = list(/datum/skill_modifier/job/level/wiring)
|
||||
|
||||
/datum/antagonist/abductor/scientist
|
||||
name = "Abductor Scientist"
|
||||
@@ -29,6 +30,7 @@
|
||||
landmark_type = /obj/effect/landmark/abductor/scientist
|
||||
greet_text = "Use your experimental console and surgical equipment to monitor your agent and experiment upon abducted humans."
|
||||
show_in_antagpanel = TRUE
|
||||
skill_modifiers = list(/datum/skill_modifier/job/affinity/surgery)
|
||||
|
||||
/datum/antagonist/abductor/create_team(datum/team/abductor_team/new_team)
|
||||
if(!new_team)
|
||||
|
||||
@@ -23,5 +23,5 @@
|
||||
addtimer(CALLBACK(src, .proc/zap), rand(30, 100))
|
||||
|
||||
/obj/item/organ/heart/gland/electric/proc/zap()
|
||||
tesla_zap(owner, 4, 8000, TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE | TESLA_MOB_STUN)
|
||||
tesla_zap(owner, 4, 8000, ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN)
|
||||
playsound(get_turf(owner), 'sound/magic/lightningshock.ogg', 50, TRUE)
|
||||
@@ -86,7 +86,8 @@
|
||||
melee_damage_upper = 4
|
||||
obj_damage = 20
|
||||
environment_smash = ENVIRONMENT_SMASH_STRUCTURES
|
||||
attacktext = "hits"
|
||||
attack_verb_continuous = "hits"
|
||||
attack_verb_simple = "hit"
|
||||
attack_sound = 'sound/weapons/genhit1.ogg'
|
||||
movement_type = FLYING
|
||||
del_on_death = 1
|
||||
@@ -205,7 +206,8 @@
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
obj_damage = 60
|
||||
attacktext = "slams"
|
||||
attack_verb_continuous = "slams"
|
||||
attack_verb_simple = "slam"
|
||||
attack_sound = 'sound/effects/blobattack.ogg'
|
||||
verb_say = "gurgles"
|
||||
verb_ask = "demands"
|
||||
@@ -284,11 +286,11 @@
|
||||
if(overmind) //if we have an overmind, we're doing chemical reactions instead of pure damage
|
||||
melee_damage_lower = 4
|
||||
melee_damage_upper = 4
|
||||
attacktext = overmind.blobstrain.blobbernaut_message
|
||||
attack_verb_continuous = overmind.blobstrain.blobbernaut_message
|
||||
else
|
||||
melee_damage_lower = initial(melee_damage_lower)
|
||||
melee_damage_upper = initial(melee_damage_upper)
|
||||
attacktext = initial(attacktext)
|
||||
attack_verb_continuous = initial(attack_verb_continuous)
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut/death(gibbed)
|
||||
..(gibbed)
|
||||
|
||||
@@ -207,8 +207,8 @@
|
||||
if(prob(100 - severity * 30))
|
||||
new /obj/effect/temp_visual/emp(get_turf(src))
|
||||
|
||||
/obj/structure/blob/tesla_act(power)
|
||||
..()
|
||||
/obj/structure/blob/zap_act(power)
|
||||
. = ..()
|
||||
if(overmind)
|
||||
if(overmind.blobstrain.tesla_reaction(src, power))
|
||||
take_damage(power/400, BURN, "energy")
|
||||
|
||||
@@ -492,7 +492,7 @@
|
||||
/obj/structure/bloodsucker/candelabrum/process()
|
||||
if(!lit)
|
||||
return
|
||||
for(var/mob/living/carbon/human/H in get_actual_viewers(7, src))
|
||||
for(var/mob/living/carbon/human/H in fov_viewers(7, src))
|
||||
var/datum/antagonist/vassal/T = H.mind.has_antag_datum(ANTAG_DATUM_VASSAL)
|
||||
if(AmBloodsucker(H) || T) //We dont want vassals or vampires affected by this
|
||||
return
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
if(!.)
|
||||
return
|
||||
// must have nobody around to see the cloak
|
||||
for(var/mob/living/M in get_actual_viewers(9, owner) - owner)
|
||||
for(var/mob/living/M in fov_viewers(9, owner) - owner)
|
||||
to_chat(owner, "<span class='warning'>You may only vanish into the shadows unseen.</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
vision_distance = notice_range, ignored_mobs = target) // Only people who AREN'T the target will notice this action.
|
||||
// Warn Feeder about Witnesses...
|
||||
var/was_unnoticed = TRUE
|
||||
for(var/mob/living/M in get_actual_viewers(notice_range, owner) - owner - target)
|
||||
for(var/mob/living/M in fov_viewers(notice_range, owner) - owner - target)
|
||||
if(M.client && !M.silicon_privileges && !M.eye_blind && !M.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER))
|
||||
was_unnoticed = FALSE
|
||||
break
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
var/turf/T = get_turf(user)
|
||||
if(T && T.lighting_object && T.get_lumcount()>= 0.1)
|
||||
// B) Check for Viewers
|
||||
for(var/mob/living/M in get_actual_viewers(world.view, get_turf(owner)) - owner)
|
||||
for(var/mob/living/M in fov_viewers(world.view, get_turf(owner)) - owner)
|
||||
if(M.client && !M.silicon_privileges && !M.eye_blind)
|
||||
am_seen = TRUE
|
||||
if (!M.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER))
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
to_chat(owner, "<span class='warning'>Your victim's eyes are glazed over. They cannot perceive you.</span>")
|
||||
return FALSE
|
||||
// Check: Target See Me? (behind wall)
|
||||
if(!(owner in target.visible_atoms()))
|
||||
if(!(owner in target.fov_view()))
|
||||
// Sub-Check: GET CLOSER
|
||||
//if (!(owner in range(target_range, get_turf(target)))
|
||||
// if (display_error)
|
||||
@@ -117,8 +117,6 @@
|
||||
RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/ContinueTarget)
|
||||
// 5 second windup
|
||||
addtimer(CALLBACK(src, .proc/apply_effects, L, target, power_time), 6 SECONDS)
|
||||
ADD_TRAIT(target, TRAIT_COMBAT_MODE_LOCKED, src)
|
||||
ADD_TRAIT(L, TRAIT_COMBAT_MODE_LOCKED, src)
|
||||
|
||||
/datum/action/bloodsucker/targeted/mesmerize/proc/apply_effects(aggressor, victim, power_time)
|
||||
var/mob/living/carbon/target = victim
|
||||
@@ -127,7 +125,6 @@
|
||||
return
|
||||
PowerActivatedSuccessfully() // blood & cooldown only altered if power activated successfully - less "fuck you"-y
|
||||
target.apply_status_effect(STATUS_EFFECT_MESMERIZE, power_time)
|
||||
REMOVE_TRAIT(L, TRAIT_COMBAT_MODE_LOCKED, src)
|
||||
target.face_atom(L)
|
||||
target.Stun(power_time)
|
||||
to_chat(L, "<span class='notice'>[target] is fixed in place by your hypnotic gaze.</span>")
|
||||
@@ -136,8 +133,7 @@
|
||||
spawn(power_time)
|
||||
if(istype(target) && success)
|
||||
target.notransform = FALSE
|
||||
REMOVE_TRAIT(target, TRAIT_COMBAT_MODE_LOCKED, src)
|
||||
if(istype(L) && target.stat == CONSCIOUS && (target in L.visible_atoms(10))) // They Woke Up! (Notice if within view)
|
||||
if(istype(L) && target.stat == CONSCIOUS && (target in L.fov_view(10))) // They Woke Up! (Notice if within view)
|
||||
to_chat(L, "<span class='warning'>[target] has snapped out of their trance.</span>")
|
||||
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
clockwork_desc = "A sigil of some purpose."
|
||||
icon_state = "sigil"
|
||||
layer = LOW_OBJ_LAYER
|
||||
plane = ABOVE_WALL_PLANE
|
||||
alpha = 50
|
||||
resistance_flags = NONE
|
||||
var/affects_servants = FALSE
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
//Subtype of (riot) shield because of already implemented shieldbash stuff aswell as integrity and simillar things
|
||||
//ratvarian shield: A shield that absorbs energy from attacks and uses it to empower its bashes with remendous force. It is also quite resistant to damage, though less so against lasers and energy weaponry.
|
||||
|
||||
/obj/item/shield/riot/ratvarian
|
||||
name = "ratvarian shield"
|
||||
icon_state = "ratvarian_shield" //Its icons are in the same place the normal shields are in
|
||||
item_state = "ratvarian_shield"
|
||||
desc = "A resilient shield made out of brass.. It feels warm to the touch."
|
||||
var/clockwork_desc = "A powerful shield of ratvarian making. It absorbs blocked attacks to charge devastating bashes."
|
||||
armor = list("melee" = 80, "bullet" = 70, "laser" = -10, "energy" = -20, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
shield_flags = SHIELD_FLAGS_DEFAULT
|
||||
max_integrity = 300 //High integrity, extremely strong against melee / bullets, but still quite easy to destroy with lasers and energy
|
||||
repair_material = /obj/item/stack/tile/brass
|
||||
var/dam_absorbed = 0
|
||||
var/bash_mult_steps = 30
|
||||
var/max_bash_mult = 4
|
||||
|
||||
/obj/item/shield/riot/ratvarian/examine(mob/user)
|
||||
if((is_servant_of_ratvar(user) || isobserver(user)))
|
||||
desc = clockwork_desc
|
||||
desc +="\n <span class='inathneq_small'>The shield has absorbed [dam_absorbed] damage, multiplying the effectiveness of its bashes by [calc_bash_mult()]</span>"
|
||||
. = ..()
|
||||
desc = initial(desc)
|
||||
|
||||
obj/item/shield/riot/ratvarian/proc/calc_bash_mult()
|
||||
var/bash_mult = 0
|
||||
if(!dam_absorbed)
|
||||
return 1
|
||||
else
|
||||
bash_mult += round(clamp(1 + (dam_absorbed / bash_mult_steps), 1, max_bash_mult), 0.1) //Multiplies the effect of bashes by up to [max_bash_mult], though never less than one
|
||||
return bash_mult
|
||||
|
||||
/obj/item/shield/riot/ratvarian/proc/calc_bash_absorb_use()
|
||||
var/absorb_use = 0
|
||||
absorb_use = max(0, round(dam_absorbed * (calc_bash_mult() / round(1 + (dam_absorbed / bash_mult_steps), 0.1)), 1)) //Calculates how much of the absorbed damage the bash would actually use, so its not wasted
|
||||
return absorb_use
|
||||
|
||||
/obj/item/shield/riot/ratvarian/on_shield_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
|
||||
if(!damage)
|
||||
return ..()
|
||||
|
||||
if(!is_servant_of_ratvar(owner))
|
||||
owner.visible_message("<span class='warning'>As [owner] blocks the attack with [src], [owner.p_they()] suddenly drops it, whincing in pain! </span>", "<span class='warning'>As you block the attack with [src], it heats up tremendously, forcing you to drop it from the pain alone! </span>")
|
||||
owner.emote("scream")
|
||||
playsound(src, 'sound/machines/fryer/deep_fryer_emerge.ogg', 50)
|
||||
if(iscarbon(owner)) //Type safety for if a drone somehow got a shield (ratvar protect us)
|
||||
var/mob/living/carbon/C = owner
|
||||
var/obj/item/bodypart/part = C.get_holding_bodypart_of_item(src)
|
||||
C.apply_damage((iscultist(C) ? damage * 2 : damage), BURN, (istype(part, /obj/item/bodypart/l_arm) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM)) //Deals the damage to the holder instead of absorbing it instead + forcedrops. Doubled if a cultist of Nar'Sie.
|
||||
else
|
||||
owner.adjustFireLoss(iscultist(owner) ? damage * 2 : damage)
|
||||
addtimer(CALLBACK(owner, /mob/living.proc/dropItemToGround, src, TRUE), 1)
|
||||
else if(!is_servant_of_ratvar(attacker)) //No exploiting my snowflake mechanics
|
||||
dam_absorbed += damage
|
||||
playsound(owner, 'sound/machines/clockcult/steam_whoosh.ogg', 30)
|
||||
|
||||
if(damage <= 10) //The shield itself is hard to break, this DOES NOT modify the actual blocking-mechanic
|
||||
damage = 0
|
||||
else
|
||||
damage -= 5
|
||||
return ..()
|
||||
|
||||
/obj/item/shield/riot/ratvarian/shatter(mob/living/carbon/human/owner)
|
||||
playsound(owner, 'sound/magic/clockwork/anima_fragment_death.ogg', 50)
|
||||
new /obj/item/clockwork/alloy_shards/large(get_turf(src))
|
||||
|
||||
/obj/item/shield/riot/ratvarian/user_shieldbash(mob/living/user, atom/target, harmful)
|
||||
if(!harmful || !is_servant_of_ratvar(user)) // No fun for non-clockies, but you can keep the normal bashes. Until you try to block with it.
|
||||
shieldbash_knockback = initial(shieldbash_knockback)
|
||||
shieldbash_brutedamage = initial(shieldbash_brutedamage) //Prevention for funky stuff that might happen otherwise
|
||||
shieldbash_stamdmg = initial(shieldbash_stamdmg)
|
||||
return ..()
|
||||
var/actual_bash_mult = calc_bash_mult()
|
||||
shieldbash_knockback = round(initial(shieldbash_knockback) * actual_bash_mult, 1) //Modifying the strength of the bash, done with initial() to prevent magic-number issues if the original shieldbash values are changed
|
||||
shieldbash_brutedamage = round(initial(shieldbash_brutedamage) * actual_bash_mult, 1) //Where I think of it, better round this stuff because we don't need even more things that deal like 3.25 damage
|
||||
shieldbash_stamdmg = round(initial(shieldbash_stamdmg) * actual_bash_mult, 1) //Like 20 brute and 60 stam + a fuckton of knockback at the moment (at maximum charge), seems mostly fine? I think?
|
||||
. = ..()
|
||||
if(.) //If this bash actually hit someone
|
||||
if(actual_bash_mult > 1)
|
||||
playsound(user, 'sound/magic/fireball.ogg', 50, TRUE, frequency = 1.25)
|
||||
dam_absorbed -= calc_bash_absorb_use()
|
||||
return
|
||||
@@ -17,7 +17,8 @@
|
||||
obj_damage = 40
|
||||
melee_damage_lower = 12
|
||||
melee_damage_upper = 12
|
||||
attacktext = "slashes"
|
||||
attack_verb_continuous = "slashes"
|
||||
attack_verb_simple = "slash"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
weather_immunities = list("lava")
|
||||
movement_type = FLYING
|
||||
@@ -68,14 +69,16 @@
|
||||
maxHealth = 300
|
||||
melee_damage_upper = 25
|
||||
melee_damage_lower = 25
|
||||
attacktext = "devastates"
|
||||
attack_verb_continuous = "devastates"
|
||||
attack_verb_simple = "devastate"
|
||||
speed = -1
|
||||
obj_damage = 100
|
||||
max_shield_health = INFINITY
|
||||
else if(GLOB.ratvar_approaches) //Hefty health bonus and slight attack damage increase
|
||||
melee_damage_upper = 15
|
||||
melee_damage_lower = 15
|
||||
attacktext = "carves"
|
||||
attack_verb_continuous = "carves"
|
||||
attack_verb_simple = "carve"
|
||||
obj_damage = 50
|
||||
max_shield_health = 4
|
||||
|
||||
|
||||
@@ -100,6 +100,24 @@
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Judicial Visor, which can smite an area, applying Belligerent and briefly stunning."
|
||||
|
||||
//Nezbere's shield: Creates a ratvarian shield which absorbs attacks, see ratvarian_shield.dm for details.
|
||||
/datum/clockwork_scripture/create_object/nezberes_shield
|
||||
descname = "Shield with empowerable bashes"
|
||||
name = "Nezbere's shield"
|
||||
desc = "Creates a shield which generates charge from blocking damage, using it to empower its bashes tremendously. It is repaired with brass, and while very durable, extremely weak to lasers and, even more so, to energy weaponry."
|
||||
invocations = list("Shield me...", "... from the coming dark!")
|
||||
channel_time = 20
|
||||
power_cost = 600 //Shouldn't be too spammable but not too hard to get either
|
||||
whispered = TRUE
|
||||
creator_message = "You form a ratvarian shield, which is capable of absorbing blocked attacks to empower its bashes."
|
||||
object_path = /obj/item/shield/riot/ratvarian
|
||||
usage_tip = "Bashes will only use charge when performed with intent to harm."
|
||||
tier = SCRIPTURE_SCRIPT
|
||||
space_allowed = TRUE
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 5
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Ratvarian shield, which can absorb energy from attacks for use in powerful bashes."
|
||||
|
||||
//Clockwork Armaments: Grants the invoker the ability to call forth a Ratvarian spear and clockwork armor.
|
||||
/datum/clockwork_scripture/clockwork_armaments
|
||||
@@ -113,7 +131,7 @@
|
||||
usage_tip = "Throwing the spear at a mob will do massive damage and knock them down, but break the spear. You will need to wait for 30 seconds before resummoning it."
|
||||
tier = SCRIPTURE_SCRIPT
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 5
|
||||
sort_priority = 6
|
||||
important = TRUE
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Permanently binds clockwork armor and a Ratvarian spear to you."
|
||||
@@ -213,7 +231,7 @@
|
||||
usage_tip = "This gateway is strictly one-way and will only allow things through the invoker's portal."
|
||||
tier = SCRIPTURE_SCRIPT
|
||||
primary_component = GEIS_CAPACITOR
|
||||
sort_priority = 6
|
||||
sort_priority = 7
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Allows you to create a one-way Spatial Gateway to a living Servant or Clockwork Obelisk."
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
antagpanel_category = "Clockcult"
|
||||
job_rank = ROLE_SERVANT_OF_RATVAR
|
||||
antag_moodlet = /datum/mood_event/cult
|
||||
skill_modifiers = list(/datum/skill_modifier/job/level/wiring)
|
||||
var/datum/action/innate/hierophant/hierophant_network = new
|
||||
threat = 3
|
||||
var/datum/team/clockcult/clock_team
|
||||
|
||||
@@ -7,9 +7,12 @@
|
||||
desc = "A large, menacing creature covered in armored black scales."
|
||||
speak_emote = list("cackles")
|
||||
emote_hear = list("cackles","screeches")
|
||||
response_help = "thinks better of touching"
|
||||
response_disarm = "flails at"
|
||||
response_harm = "punches"
|
||||
response_help_continuous = "thinks better of touching"
|
||||
response_help_simple = "think better of touching"
|
||||
response_disarm_continuous = "flails at"
|
||||
response_disarm_simple = "flail at"
|
||||
response_harm_continuous = "punches"
|
||||
response_harm_simple = "punch"
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "imp"
|
||||
icon_living = "imp"
|
||||
@@ -23,7 +26,8 @@
|
||||
minbodytemp = 250 //Weak to cold
|
||||
maxbodytemp = INFINITY
|
||||
faction = list("hell")
|
||||
attacktext = "wildly tears into"
|
||||
attack_verb_continuous = "wildly tears into"
|
||||
attack_verb_simple = "wildly tear into"
|
||||
maxHealth = 200
|
||||
health = 200
|
||||
healable = 0
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
/datum/antagonist/ert/engineer
|
||||
role = "Engineer"
|
||||
outfit = /datum/outfit/ert/engineer
|
||||
skill_modifiers = list(/datum/skill_modifier/job/level/wiring)
|
||||
|
||||
/datum/antagonist/ert/engineer/amber
|
||||
outfit = /datum/outfit/ert/engineer/alert
|
||||
@@ -61,6 +62,7 @@
|
||||
/datum/antagonist/ert/medic
|
||||
role = "Medical Officer"
|
||||
outfit = /datum/outfit/ert/medic
|
||||
skill_modifiers = list(/datum/skill_modifier/job/affinity/surgery)
|
||||
|
||||
/datum/antagonist/ert/medic/amber
|
||||
outfit = /datum/outfit/ert/medic/alert
|
||||
|
||||
@@ -28,7 +28,8 @@
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
vision_range = 1 // Only attack when target is close
|
||||
wander = FALSE
|
||||
attacktext = "glomps"
|
||||
attack_verb_continuous = "glomps"
|
||||
attack_verb_simple = "glomp"
|
||||
attack_sound = 'sound/effects/blobattack.ogg'
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2)
|
||||
|
||||
|
||||
@@ -451,9 +451,9 @@
|
||||
return
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/nuclearbomb/tesla_act(power, tesla_flags)
|
||||
/obj/machinery/nuclearbomb/zap_act(power, zap_flags)
|
||||
..()
|
||||
if(tesla_flags & TESLA_MACHINE_EXPLOSIVE)
|
||||
if(zap_flags & ZAP_MACHINE_EXPLOSIVE)
|
||||
qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over
|
||||
|
||||
#define NUKERANGE 127
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
job_rank = ROLE_OPERATIVE
|
||||
antag_moodlet = /datum/mood_event/focused
|
||||
threat = 10
|
||||
skill_modifiers = list(/datum/skill_modifier/job/level/wiring)
|
||||
var/datum/team/nuclear/nuke_team
|
||||
var/always_new_team = FALSE //If not assigned a team by default ops will try to join existing ones, set this to TRUE to always create new team.
|
||||
var/send_to_spawnpoint = TRUE //Should the user be moved to default spawnpoint.
|
||||
|
||||
@@ -31,16 +31,20 @@
|
||||
|
||||
see_in_dark = 8
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
response_help = "passes through"
|
||||
response_disarm = "swings through"
|
||||
response_harm = "punches through"
|
||||
response_help_continuous = "passes through"
|
||||
response_help_simple = "pass through"
|
||||
response_disarm_continuous = "swings through"
|
||||
response_disarm_simple = "swing through"
|
||||
response_harm_continuous = "punches through"
|
||||
response_harm_simple = "punch through"
|
||||
unsuitable_atmos_damage = 0
|
||||
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) //I don't know how you'd apply those, but revenants no-sell them anyway.
|
||||
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)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = INFINITY
|
||||
harm_intent_damage = 0
|
||||
friendly = "touches"
|
||||
friendly_verb_continuous = "touches"
|
||||
friendly_verb_simple = "touch"
|
||||
status_flags = 0
|
||||
wander = FALSE
|
||||
density = FALSE
|
||||
|
||||
@@ -6,9 +6,12 @@
|
||||
desc = "A large, menacing creature covered in armored black scales."
|
||||
speak_emote = list("gurgles")
|
||||
emote_hear = list("wails","screeches")
|
||||
response_help = "thinks better of touching"
|
||||
response_disarm = "flails at"
|
||||
response_harm = "punches"
|
||||
response_help_continuous = "thinks better of touching"
|
||||
response_help_simple = "think better of touching"
|
||||
response_disarm_continuous = "flails at"
|
||||
response_disarm_simple = "flail at"
|
||||
response_harm_continuous = "punches"
|
||||
response_harm_simple = "punch"
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "daemon"
|
||||
icon_living = "daemon"
|
||||
@@ -24,7 +27,8 @@
|
||||
minbodytemp = 0
|
||||
maxbodytemp = INFINITY
|
||||
faction = list("slaughter")
|
||||
attacktext = "wildly tears into"
|
||||
attack_verb_continuous = "wildly tears into"
|
||||
attack_verb_simple = "wildly tear into"
|
||||
maxHealth = 200
|
||||
health = 200
|
||||
healable = 0
|
||||
@@ -116,8 +120,10 @@
|
||||
desc = "A large, adorable creature covered in armor with pink bows."
|
||||
speak_emote = list("giggles","titters","chuckles")
|
||||
emote_hear = list("guffaws","laughs")
|
||||
response_help = "hugs"
|
||||
attacktext = "wildly tickles"
|
||||
response_help_continuous = "hugs"
|
||||
response_help_simple = "hug"
|
||||
attack_verb_continuous = "wildly tickles"
|
||||
attack_verb_simple = "wildly tickle"
|
||||
|
||||
attack_sound = 'sound/items/bikehorn.ogg'
|
||||
feast_sound = 'sound/spookoween/scary_horn2.ogg'
|
||||
|
||||
@@ -84,9 +84,11 @@
|
||||
hud_possible = list(ANTAG_HUD, DIAG_STAT_HUD, DIAG_HUD)
|
||||
obj_damage = 0
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
attacktext = "shocks"
|
||||
attack_verb_continuous = "shocks"
|
||||
attack_verb_simple = "shock"
|
||||
attack_sound = 'sound/effects/empulse.ogg'
|
||||
friendly = "pinches"
|
||||
friendly_verb_continuous = "pinches"
|
||||
friendly_verb_simple = "pinch"
|
||||
speed = 0
|
||||
faction = list("swarmer")
|
||||
AIStatus = AI_OFF
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
antagpanel_category = "Traitor"
|
||||
job_rank = ROLE_TRAITOR
|
||||
antag_moodlet = /datum/mood_event/focused
|
||||
skill_modifiers = list(/datum/skill_modifier/job/level/wiring/basic)
|
||||
var/special_role = ROLE_TRAITOR
|
||||
var/employer = "The Syndicate"
|
||||
var/give_objectives = TRUE
|
||||
|
||||
@@ -226,7 +226,11 @@
|
||||
|
||||
/datum/spellbook_entry/lightningbolt/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) //return 1 on success
|
||||
. = ..()
|
||||
user.flags_1 |= TESLA_IGNORE_1
|
||||
ADD_TRAIT(user, TRAIT_TESLA_SHOCKIMMUNE, "lightning_bolt_spell")
|
||||
|
||||
/datum/spellbook_entry/lightningbolt/Refund(mob/living/carbon/human/user, obj/item/spellbook/book)
|
||||
. = ..()
|
||||
REMOVE_TRAIT(user, TRAIT_TESLA_SHOCKIMMUNE, "lightning_bolt_spell")
|
||||
|
||||
/datum/spellbook_entry/infinite_guns
|
||||
name = "Lesser Summon Guns"
|
||||
|
||||
Reference in New Issue
Block a user